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

How to use Razor display template to convert string to html string

本文关键字:字符串 转换 html 何使用 Razor 显示      更新时间:2023-09-26

我是剃刀和显示模板的新手,所以请纠正我的错误。我正在处理一个包含HTML的字符串。如果我尝试将其直接转换为HtmlString,我的Ajax表单将拒绝提交。作为一种变通方法,我尝试使用显示模板来实现类似的目标

我的@foreach循环包含此

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

我的显示模板包含此

HtmlString.cshtml

@model String
@{
    new HtmlString(@Model);
}

因此,如果myString = "<ul><li>my text</li></ul>"

我希望我的ajax表单显示

  • 我的文本

我现在拥有的东西不起作用,也没有任何回报。请帮我做错事。

您应该像使用@Html.Raw()一样;

@Html.Raw(Model.myString)

希望这能有所帮助。

我对您的代码做了一些小的修改。请测试并执行。

HtmlString.cshtml文件中,将代码替换为以下内容。这是一个在foreach循环中被调用的partial view,并被传递一个包含HTMLstring值。@Html.Raw用于将HTML显示为HTML:

@model String
@Html.Raw(Model)

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

@model List<string>
@foreach (var s in Model)
{
     @Html.Partial("HtmlString", s)
}

这是我用来测试你的场景的数据。输出的HTML是正确的:

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);
}

结果输出如下:

<ul><li>my text</li></ul><ul><li>my text</li></ul>

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