2

クリーンなマークアップを生成するために、私はよく次のようなコードを使用します。

<asp:Literal ID="ltItem" runat="server">
<li class="{0}"><a href="{1}">{2}</a></li></asp:Literal>

そして、コードビハインドで:

...
lt.Text = string.Format(lt.Text,
    cssClass,
    item.Url,
    Server.HtmlEncode(item.Caption)
);

いくつかの利点は次のとおりです。

  • クリーンなHTMLマークアップ、ASP.NetWebFormIDなどはありません
  • 設計者は、開発者の介入なしにaspxに小さな変更を加えることができます
  • コードはプリコンパイルされます(インラインコードまたはdatabindステートメントを使用するのではなく)

短所:

  • やや不可解
  • 壊れやすい-マークアップでパラメータが削除されると、string.Formatは例外をスローします

したがって、私の質問:

これは、クリーンなマークアップを生成するための一般的な方法ですか?より良い選択肢はありますか?データバインディング構文アプローチは望ましいですか?

4

2 に答える 2

2

フレームワークと戦っているようです。ASP.NET Webフォームは、クライアント側のIDを自動的に解決し、Windowsフォームのように感じるプロパティベースのUIのカスタマイズを可能にするように設計されています。これらの機能は、レンダリングされたHTMLを混乱させることがよくありますが、認識されている利点のため、結果は許容されます。

利点を認識しておらず、ASP.NET Webフォームのアプローチと戦っている場合は、別のフレームワークを検討してください。あなたの価値観や目標を共有しないフレームワークを使用する意味はありません。

レンダリングされたHTMLを完全に制御する場合は、ASP.NETMVCを検討してください。HTML出力の制御は、その目標の1つです。さらに、関心の分離を強制するように設計されています。

Microsoft以外のフレームワークを使用している場合は、次のような多くのフレームワークを利用できます。

  • MonoRail -RubyonRailsに触発されたフレームワーク
  • Maverick.NET -JavaのMaverickフレームワークの.NETポート
于 2010-06-02T16:16:11.777 に答える
0

私が間違っている場合は訂正してください。ただし、MVCを使用しても、プリコンパイルされたコードは得られませんね。Webフォームを使用するときも同じことをしますが、いくつか問題がありました。

于 2011-08-10T11:10:24.213 に答える