是否可以在视图模型中使用属性来指定剃须刀在没有 html 编码的情况下呈现字符串?
编辑:我要问的是是否可以在模型中添加一个属性并让它修改数据表示(例如如何添加 [Disable]、[Layout(...)]、[Required] 等.) - 以这样一种方式,它会使字符串中的 html 呈现。
是否可以在视图模型中使用属性来指定剃须刀在没有 html 编码的情况下呈现字符串?
编辑:我要问的是是否可以在模型中添加一个属性并让它修改数据表示(例如如何添加 [Disable]、[Layout(...)]、[Required] 等.) - 以这样一种方式,它会使字符串中的 html 呈现。
我不知道,但似乎您可以将数据类型从字符串更改为 HTMLString。如果您使用 HTMlString,它应该在字符串中呈现 HTML。
请参阅始终使用 MVC3 和 Razor 输出原始 HTML
该线程中的第二个响应显示了使用属性显示原始 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()
如果这不是您所追求的,您应该向我们提供您的代码在哪里崩溃的示例。