始终使用MVC3和Razor输出原始HTML

Dyl*_*rry 16 c# asp.net razor asp.net-mvc-3

我有一个类看起来像这样的属性:

[AllowHtml]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)

我已经放入了[AllowHtml]属性,让我通过我构建的表单向这个属性提交HTML,但我想要做的是输出属性的值作为原始HTML而不进行转义.

我知道我可以使用,Html.Raw(Model.Description)但我正在寻找的是一种告诉Html.DisplayFor(m => m.Description)我始终输出原始HTML的方法.是否有一个属性可以用来装饰我班级的属性,我希望这样做?

基本上我是懒惰 - 我不想要记住哪些属性可能包含HTML,所以我不想Html.Raw(…)在我需要做上述时考虑使用- 我很多而不是我的模型知道什么它应该做并自动完成.我试过寻找答案,但要么我没有正确地说它或者没有办法做到这一点:(

谢谢,

SLa*_*aks 21

改变你的Description意图返回HtmlString.

剃刀不会逃避HtmlString价值观.
(事实上​​,一切Html.Raw都是创造一个HtmlString)


Pet*_*ree 5

这实际上相当简单(一旦你知道如何......).将DataType属性更改为[DataType(DataType.Html)],并创建部分视图,将其放入Views/Shared/DisplayTemplates/Html.cshtml,使用:

@model string
@Html.Raw(Model)
Run Code Online (Sandbox Code Playgroud)

当然,您也不能更改DataType attrib,MultilineText.cshtml而是命名视图而不是Html.cshtml.