asp.net-mvc - TagBuilderで属性値のHTMLエンコードを無効にする

原文 asp.net-mvc asp.net-mvc-3 tagbuilder

MVCを使用していて、HtmlHelper拡張関数ImageLinkを作成しました。この関数は、2つのTagBuilderオブジェクトを使用して、HTML画像リンク(<a><img/></a>など)を作成します。

正常に動作しますが、画像ボタンのアクションを最初に確認する必要があるページができました。そこで、「javascript:return confirm( 'confirm me');」を指定してonclick属性を追加しました。 onclickコードとして。

これは次のようにレンダリングされます:onclick = "javascript:return confirm( 'confirm me');"

これはうまくいきませんが、うまくいきます。しかし、次に入ると:

"javascript:return confirm( 'confirm me \ r \ nnewline');"

これは次のようにレンダリングされます:

onclick = "javascript:return confirm( 'confirm me
改行 '); "

これは機能しません。

TagBuilderには何もエンコードせず、そのまま処理させたいと思います。しかし、それができるので、私は今、これを適切に機能させる方法を探しています。
答え
バックスラッシュ(\)はC#文字列の特殊文字であるため、他の状況で最後の文字列に表示したい場合と同じように、エスケープする必要があります。

tag.MergeAttribute("onclick", "return confirm('first line\\n\\nsecond line');");
関連記事

c# - ASP.NET MVCモデルを再利用可能なアセンブリとしてカプセル化する

asp.net-mvc - クライアント検証を実装しないことには十分な理由がありますか

c# - 応答ステータスコードの設定時にFormsAuthentication.SignOutが失敗する

asp.net-mvc - MVC複数のデータモデルがビューに渡される[重複]

asp.net-mvc - 拡張可能なコントローラの追加ダイアログ?

c# - ビューファイルからフォームフィールドの有効性を判断するにはどうすればよいですか?

javascript - MVC3のJavaScriptを介してViewModelプロパティ値を変更する

html - environment.Newlineを<br/> htmlタグで置き換える必要があります

.net - URLのスラッシュをエンコードできません

asp.net-mvc - asp.net mvc 3サーバー側のリモート検証がフィドラーを介した送信で機能しない