2

是否可以在视图模型中使用属性来指定剃须刀在没有 html 编码的情况下呈现字符串?

编辑:我要问的是是否可以在模型中添加一个属性并让它修改数据表示(例如如何添加 [Disable]、[Layout(...)]、[Required] 等.) - 以这样一种方式,它会使字符串中的 html 呈现。

4

3 回答 3

1

我不知道,但似乎您可以将数据类型从字符串更改为 HTMLString。如果您使用 HTMlString,它应该在字符串中呈现 HTML。

请参阅始终使用 MVC3 和 Razor 输出原始 HTML

该线程中的第二个响应显示了使用属性显示原始 html 的一种可能方式。

于 2013-03-07T02:25:15.947 回答
1

尝试Html.Raw(yourstring)

这应该会有所帮助。

于 2013-03-07T03:45:23.227 回答
0

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()

如果这不是您所追求的,您应该向我们提供您的代码在哪里崩溃的示例。

于 2013-03-07T04:59:59.250 回答