编程语言
首页 > 编程语言> > c# – 在Asp.net WebControls,UserControls,Controls上覆盖Render方法时的最佳实践

c# – 在Asp.net WebControls,UserControls,Controls上覆盖Render方法时的最佳实践

作者:互联网

在创建自定义WebControl,UserControl,Control时,需要覆盖各种Render方法,主要有两种方法可以实现:

快速又脏:

public override void RenderControl(HtmlTextWriter writer)
{
    writer.Write("<div class=\"{0}\"><a href={1}>{2}</a>", CssClass, "/someurl.aspx", LocalizedStrings.EditLinkText);
    base.RenderControl(writer);
    writer.Write("</div>");
}

漫长而干净:

public override void RenderControl(HtmlTextWriter writer)
{
    writer.WriteBeginTag(HtmlTextWriterTag.Div.ToString());
    writer.WriteAttribute(HtmlTextWriterAttribute.Class.ToString(), CssClass);
    writer.Write(HtmlTextWriter.TagRightChar);
    var link = new HtmlAnchor();
    link.HRef = "/someurl.aspx";
    link.Title = LocalizedStrings.EditLinkTitle;
    link.InnerText = LocalizedStrings.EditLinkText; ;
    link.Attributes.Add(HtmlTextWriterAttribute.Class.ToString(), "someclass");
    link.RenderControl(writer);
    base.RenderControl(writer);
    writer.WriteEndTag(HtmlTextWriterTag.Div.ToString());
}

我想知道第二种方法是否值得.

解决方法:

当我开发网页控件时,我曾问自己一个问题.为了尝试解决它,我反编译了一个telerik的库,然后我看到了它们如何实现Web控件.他们开发了许多组件并使用第二个近似值.

在我看来,这是最好的选择,因为如果控件很复杂,你的代码会变成很多string.format或类似的东西,很难理解和修改.当然第二种选择也可能不清楚,但只需很少的实用方法就可以创建高度可维护的控件.

标签:c,asp-net,override,coding-style,web-controls
来源: https://codeday.me/bug/20190620/1245440.html