【问题标题】:Server-Side ASP.net controls rendered as HTML TextArea呈现为 HTML TextArea 的服务器端 ASP.net 控件
【发布时间】:2015-09-08 10:50:04
【问题描述】:

我有一个呈现为

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();
        }
    }

此控件旨在从数据模型中获取验证错误消息(而不是向每个文本框提供“data-val”和“data-val-required”)。 使用此代码很容易:

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

其中呈现为 input type=text 标签,以下呈现为 textarea 标签:

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

我的问题是在渲染 textarea 时我找不到任何属性来填充 textarrea 的文本。要在 textarea 中设置文本,我刚刚找到了以下语法:

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

然而,我不知道如何在我的服务器控件中实现它。我不知道我是否在正确的轨道上。

【问题讨论】:

    标签: asp.net validation custom-server-controls


    【解决方案1】:

    你需要调用普通的Write()方法在标签内写入文本。

    记得对文本进行 HTML 编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      相关资源
      最近更新 更多