0

私は現在、新しいASP.net MVC Webサイトを作成中であり、Html.Encodeをあちこちで使用していることに気付きました。これは良い習慣ですが、かなり面倒になります。これをクリーンアップする良い方法は、演算子をオーバーロードしてHtmlエンコーディングを自動的に実行できる場合だと思います。

以前:

<%= Html.Encode( ViewData['username'] ) %>

次と同等になります:

<%=h ViewData['username'] %>

誰かが私がこれをどのように行うことができるか、おそらく拡張メソッドなどを使用して、何かアイデアがありますか?

4

2 に答える 2

7

演算子のオーバーロードほどクリーンではありませんが、次の拡張メソッドを使用しました。

public static string Safe(this string sz)
{
    return HttpUtility.HtmlEncode(sz);
}

だから私のaspxidで行う:

<%= this.ViewData["username"].Safe() %>

式の最後に余分なメソッドを追加することは、関数を介して値を送信するよりも私にはきれいに見えます。

于 2008-10-10T18:39:49.783 に答える
-2

注:これは醜くテストされていないハックです、私はこれをやったことはないと思います

public static String h (this System.Object o, System.Object viewData)
{
    return Html.Encode(viewData);
}

ViewDataのタイプがわからないので、ここではObjectを使用しました。実際のコードでは、実際にタイプを変更するのが最適です。

これは、拡張メソッドをSystem.Objectにぶら下げることで機能するため、すべてのタイプで常に使用できます...醜いですが、次のような仕事をする可能性があります。

<%=h(ViewData['username']) %>
于 2008-10-10T18:31:34.560 に答える