我已经在ASP.NET上工作了一年多了,我发现了一个有趣的想法,我想要反馈。
我注意到Literal控件在viewstate中保存了它们的文本值。这对我来说有点奇怪,因为它有效地确保了Literal控件中存储的任何内容都将被复制(一次在渲染页面上,一旦隐藏在视图状态中)。
作为替代方案,我已经开始使用带有runat =“server”和innerhtml / innertext属性的通用html控件。在我看来,如果你需要将你的内容包装在一个标签中,那么在没有viewstate膨胀的情况下实现与文字控制相同的功能。然而,在我尽可能多地消除项目中的文字数量之前,我想知道是否存在任何我没有想到的缺点。想法?
答案 0 :(得分:0)
我还会考虑创建自己的自定义控件,这很容易做到。你可以这样做:
public class MyLiteral : WebControl
{
public string Text { get; set; }
protected override void Render(HtmlTextWriter writer)
{
writer.Write(this.Text);
}
}
由于功能非常简单,因此这是一种灵活的解决方案,因为它可以让您更全面地访问所有文本。例如,稍后如果您意识到需要粗体文本,则不必更新控件的所有标记,您可以更改自定义类。这样做有很多好处。您需要做的就是在配置文件的<pages>
元素中添加对命名空间/程序集的引用(tagPrefix为c),并将标记更改为:
<c:MyLiteral Text="xyz" runat="server" />