0

私は ASP.NET に取り組んで 1 年余りになりますが、フィードバックが必要な興味深い考えに出会いました。

リテラル コントロールはテキスト値をビューステートに保存することに気付きました。これは、Literal コントロールに保存されているコンテンツが複製されることを効果的に保証するため、私にはやや奇妙に思えます (レンダリングされたページに一度表示され、viewstate 内に隠されます)。

別の方法として、runat="server" と innerhtml/innertext プロパティを持つ一般的な html コントロールを使い始めました。とにかくタグ内にコンテンツをラップする必要がある場合、ビューステートの膨張なしでリテラルコントロールと同じことを達成するように思えます。ただし、プロジェクトで可能な限り多くのリテラルを調べて排除する前に、私が考えていない欠点があるかどうか疑問に思っています。考え?

4

1 に答える 1

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" />
于 2013-08-05T17:42:10.013 に答える