2013-08-05 32 views
0

我已經在ASP.NET上工作了一年多了,並且我遇到了一個有趣的想法,我希望得到反饋。使用文字與GenericHtmlControl和視圖狀態縮減

我注意到,文字控件將它們的文本值保存在視圖狀態中。這對我來說似乎有點奇怪,因爲它有效地確保了無論在Literal控件中存儲的內容都將被複制(一次在渲染頁面上,一次隱藏在視圖狀態中)。

作爲一種替代方法,我已經開始使用帶有runat =「server」和innerhtml/innertext屬性的通用html控件。在我看來,爲了實現與字面控制相同的功能,無需視圖狀態膨脹,只要您需要將標籤內容包裹在標籤內。然而,在我儘可能多地消除我的項目中的文字之前,我想知道是否有任何我沒有想到的缺點。思考?

+0

您正在使用或修改的值這些控件在服務器端? –

回答

0

我還會考慮創建自己的自定義控件,這將非常容易。你可以這樣做:

public class MyLiteral : WebControl 
{ 
    public string Text { get; set; } 


    protected override void Render(HtmlTextWriter writer) 
    { 
     writer.Write(this.Text); 
    } 

} 

由於功能相當簡單,這是一個靈活的解決方案,因爲它可以讓你所有的文本更具全球性的訪問。例如,稍後如果您意識到您需要粗體文本,則不必更新控件的所有標記,您可以更改自定義類。這樣做有很多好處。所有你需要做的是配置文件的<pages>元素中添加refernce命名空間/組件(用C的的TagPrefix),並更改標記來:

<c:MyLiteral Text="xyz" runat="server" /> 
+0

這似乎是一個奇妙的解決方案。這是非常簡單的實現,並沒有像我的通用控制方法一樣的侷限性,同時仍然保持視圖狀態的清潔。謝謝! –