【问题标题】:How to use Razor display template to convert string to html string如何使用 Razor 显示模板将字符串转换为 html 字符串
【发布时间】:2016-09-06 00:22:35
【问题描述】:

我是剃刀和显示模板的新手,所以请纠正我的错误。我正在处理一个包含 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 表单

  • 我的文字

我现在拥有的东西不起作用并且什么也没有返回。请帮助我做错了什么。

【问题讨论】:

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


    【解决方案1】:

    你应该使用@Html.Raw()like;

    @Html.Raw(Model.myString)

    希望这会有所帮助。

    【讨论】:

    • 您的意思是在HtmlString.cshtml 中使用@Html.Raw(Model.myString) 吗?因为我尝试在我的视图中使用它并且 Ajax 表单拒绝提交。
    • @usr4896260。使用Html.Raw() 是正确的。但这与您的 Ajax 表单无关。如果您对此有疑问,则应显示相关代码。
    【解决方案2】:

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

    在您的 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>
    

    希望我正确理解了您的问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      相关资源
      最近更新 更多