[解決済み】MvcHtmlStringとは何ですか、またどのような場合に使用するのですか?
質問
その
ドキュメンテーション
に対して
MvcHtmlString
は、ひどく啓発的なものではありません。
HTMLエンコードされた文字列を表し、再度エンコードしてはいけない文字列を表します。
具体的にどのような意味があるのか、私にはよくわかりません。いくつかの HTML ヘルパーメソッドは
MvcHtmlString
しかし、私がネットで見たカスタムヘルパーのいくつかの例では、普通の文字列を返しています。
質問です。
とは何ですか?
MvcHtmlString
?
どのような場合に
MvcHtmlString
オーバー
string
とその逆は?なぜですか?
どのように解決するのですか?
ASP.NET 4 では、新しいコードナゲット構文が導入されています。
<%: %>
. 基本的には
<%: foo %>
は、次のように変換されます。
<%= HttpUtility.HtmlEncode(foo) %>
. チームは、開発者が
<%: %>
の代わりに
<%= %>
を可能な限り使用し、XSS を防止しています。
しかし、この場合、コード・ナゲットがすでにその結果をエンコードしている場合、そのコード・ナゲットの中の
<%: %>
の構文は
再エンコード
となります。 これは、IHtmlStringインターフェイス(.NET 4の新機能)の導入により解決されます。 もし
foo()
で
<%: foo() %>
はIHtmlStringを返します。
<%: %>
構文はそれを再エンコードしません。
MVC 2のヘルパーはMvcHtmlStringを返しますが、ASP.NET 4ではIHtmlStringというインターフェースを実装しています。 そのため、開発者が
<%: Html.*() %>
をASP.NET 4で使用する場合、結果はダブルエンコードされません。
編集してください。
この新しい構文ですぐに得られる利点は、ビューが少しきれいになることです。 たとえば、次のように書くことができます。
<%: ViewData["anything"] %>
の代わりに
<%= Html.Encode(ViewData["anything"]) %>
.
関連
-
[解決済み】C#でクエスチョンマークを2つ並べるとどんな意味になるのか?
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] async」と「await」の使い方とタイミング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。