如何使用Razor显示模板将字符串转换为html字符串

时间:2016-05-10 20:31:45

标签: javascript html asp.net-mvc razor asp.net-ajax

我是剃须刀和显示模板的新手,所以请在我错的地方纠正我。我正在使用包含HTML的字符串。如果我尝试converting it directly to a HtmlString,我的Ajax表单拒绝提交。作为一种解决方法,我尝试使用显示模板,目标是实现类似这样的

我的@foreach循环包含此

 @Html.DisplayFor(modelItem => myModel.myString, "HtmlString")

我的DisplayTemplate包含此

HtmlString.cshtml

@model String

@{
    new HtmlString(@Model);
}

所以如果myString = "<ul><li>my text</li></ul>"

我希望我的ajax表格显示

  • 我的文字

我现在所做的并不起作用。请帮助我做错了。

2 个答案:

答案 0 :(得分:1)

您应该使用@Html.Raw()之类的;

@Html.Raw(Model.myString)

希望这有帮助。

答案 1 :(得分:0)

我对您的代码进行了一些小修改。请测试并实施。

HtmlString.cshtml文件中,使用以下内容替换您的代码。这是在partial view循环中调用的foreach,并传递包含string的{​​{1}}值。 HTML用于将HTML显示为HTML:

@Html.Raw

您的视图将收到从控制器的操作方法传递的字符串列表。每个字符串都包含HTML:

@model String

@Html.Raw(Model)

这是我用来测试您的方案的数据。输出的HTML是正确的:

@model List<string>

@foreach (var s in Model)
{
     @Html.Partial("HtmlString", s)
}

结果输出如下:

public ActionResult TestMethod1()
{
     List<string> strings = new List<string>();

     strings.Add("<ul><li>my text</li></ul>");
     strings.Add("<ul><li>my text</li></ul>");

     return View(strings);
}

我希望我能正确理解你的问题吗?