0

IDisposableを返すHTMLヘルパーを使用して、アプリケーションで頻繁に必要となる特定のDIV構造を作成します。このクラスのコンストラクターは開いているdivを作成し、Disposeメソッドは閉じるDivを作成します。次に、アプリケーションを保護する必要があります。この構造が何らかの条件で作成されないようにする必要がありますが、スコープもレンダリングされない場合は、使用から終了までの間に生成されるすべての種類のHTMLも必要です。

私が最初にしたことは、ViewContextで見つかったTextWriterをダミーに置き換えることでした。

_helper.ViewContext.Writer = new StringWriter(new StringBuilder());

ViewContext Writerを直接使用してHTMLをレンダリングするが、他のコード(生のHTMLおよびその他のヘルパー)では機能しないコードの各部分で機能します。

したがって、問題は次のとおりです。Asp.netビューがusingブロックのスコープ内でHTMLをレンダリングするのを防ぐにはどうすればよいですか?

4

2 に答える 2

3

申し訳ありませんが、現時点では、usingブロックの内容がレンダリングされるのを防ぐ方法はありません。とにかく、それはこのブロックの本来の意図ではありませんでした。何かがレンダリングされないようにしたい場合は、if代わりにステートメントを使用することを検討してください。

于 2013-02-28T22:29:06.610 に答える
1

サンプルコードはありません。このアイデアはかなりハックですが、セキュリティで保護する必要があるこれらのものが無数にあり、条件ロジックを追加する時間がない場合に機能する可能性があります。

アプリの Response.Filter を使用して html を削除するとどうなるでしょうか。次に、コンストラクターと破棄メソッドで、ユーザーがコンテンツの表示を許可されていない場合は、見つけやすい要素をいくつか出力します。これらの要素を正規表現で置き換えるか、Html Agility Pack を使用して、ストリームがブラウザ。

于 2013-02-28T22:39:29.473 に答える