2015-06-22 8 views
0

У меня есть серверный элемент управления, который отображается как < Тип ввода = «Что-то» > или или textarea >. Код сам за себя:Серверные элементы управления ASP.net, представленные как HTML TextArea

public string Namespace 
    { 
     get { return nspace; } 
     set { nspace = value; } 
    } 
    public string Model 
    { 
     get { return model; } 
     set { model = value; } 
    } 

    public string Text 
    { 
     get { return text; } 
     set { text = value; } 
    } 

    public string TextMode 
    { 
     get { return textMode; } 
     set { textMode = value; } 
    } 

    public string _Type 
    { 
     get { return type; } 
     set { type = value; } 
    } 

    public string Property { get; set; } 

    protected override void RenderContents(HtmlTextWriter output) 
    { 
     output.AddAttribute(HtmlTextWriterAttribute.Id, Property.ToLower()); 
     output.AddAttribute(HtmlTextWriterAttribute.Name, Property.ToLower()); 
     output.AddAttribute(HtmlTextWriterAttribute.Type, _Type); 
     if(!String.IsNullOrEmpty(Text)) 
      output.AddAttribute(HtmlTextWriterAttribute.Value, Text);    
     Type modelType = Type.GetType(string.Format("{0}.{1}", Namespace, Model)); 
     PropertyInfo propInfo = modelType.GetProperty(Property); 
     var attr = propInfo.GetCustomAttribute<RequiredAttribute>(false); 
     if (attr != null) 
     { 
      output.AddAttribute("data-val", "true"); 
      output.AddAttribute("data-val-required", attr.ErrorMessage); 
     } 
     //forces styles to be added to the control 
     this.AddAttributesToRender(output); 
     if (!String.IsNullOrEmpty(TextMode)) 
     { 
      output.RenderBeginTag("textarea"); 
      output.RenderEndTag(); 
     } 
     else 
     { 
      output.RenderBeginTag("input"); 
      output.RenderEndTag(); 
     } 
    } 

Этого контроль направлен на получение сообщений об ошибках валидации от модели данных (вместо предоставления «данные-VAL» и «данные-валин-требуется» каждому текстового поля). с помощью этого кода легко:

<ServerControlTag:ControlName Property="aProp" runat="Server" Model="MyModel" ID="txtSomething" /> 

Который оказывает как тип ввода = текст тега, а следующее делает как TEXTAREA тег:

<ServerControlTag:ControlName Property="Description" runat="Server" Model="MyModel" TextMode="MultiLine" ID="txtDescription" class="message" /> 

Моя проблема при рендеринге текстовое поле, я не могу найти какой-либо атрибут для заполнения текста textarrea. Для того, чтобы установить текст в текстовом поле, я только что нашел следующий синтаксис:

<textarea ... > My Text Here </textarea> 

еще, я не знаю, как реализовать это в моем управлении сервером. Я не знаю, даже если я на правильном пути.

ответ

1

Чтобы написать текст внутри тега, необходимо вызвать обычный метод Write().

Не забудьте HTML-кодировать текст.