ビューモデルで属性を使用して、かみそりがhtmlエンコーディングなしで文字列をレンダリングするように指定することは可能ですか?
編集:私が求めていたのは、モデルに属性を追加してデータ表現を変更できるかどうかでした([無効]、[レイアウト(...)]、[必須]などを追加する方法など) .) - 文字列の html をレンダリングするような方法で。
ビューモデルで属性を使用して、かみそりがhtmlエンコーディングなしで文字列をレンダリングするように指定することは可能ですか?
編集:私が求めていたのは、モデルに属性を追加してデータ表現を変更できるかどうかでした([無効]、[レイアウト(...)]、[必須]などを追加する方法など) .) - 文字列の html をレンダリングするような方法で。
私が知っていることではありませんが、データ型を文字列から HTMLString に変更できるようです。HTMlString を使用する場合は、文字列内の HTML をレンダリングする必要があります。
MVC3 と Razor を使用して常に未加工の HTML を出力するを参照してください。
そのスレッドの 2 番目の応答は、属性を使用して生の html を表示する方法を示しています。
試すHtml.Raw(yourstring)
これは役立つはずです。
MVC はデフォルトで文字列を HTML ではなくプレーンな文字列として出力します。
たとえば、あなたのAction
:
public ActionResult Test()
{
var model = new TestViewModel(); // your view model
model.Message = "<b>hello</b>";
return View(model);
}
あなたのView
:
@model MyProject.TestViewModel
<div>
@Model.Message
</div>
これは次のようにレンダリングされます。
<b>hello</b>
実際に HTML としてレンダリングする場合は、上記を次のように変更する必要があります。
@MvcHtmlString.Create(Model.Message)
または、拡張機能を作成して、より良いものにすることもできます。
public static MvcHtmlString ToMvcHtmlString(this String str)
{
if (string.IsNullOrEmpty(str))
return MvcHtmlString.Empty;
else
return MvcHtmlString.Create(str);
}
したがって、文字列を HTML としてレンダリングするには、で次のView
ように記述できます。
@Model.Message.ToMvcHtmlString()
これがあなたの求めているものではない場合は、コードが失敗している場所の例を提供する必要があります.