【问题标题】:Render string to html in MVC在 MVC 中将字符串渲染为 html
【发布时间】:2016-10-01 08:48:23
【问题描述】:

here 已经问过类似的问题,但下面的答案并没有解决我的问题。

如何将字符串呈现为 html?基本上,我需要将一个字符串传递给其中包含“a”标签定义的视图。我想要的是将其呈现为可点击的实际 html 链接。

查看模型(简化):

public class MyViewModel
{
    public string MyLink { get; set; }
}

在控制器中(简化):

public IActionResult Index()
{
    MyViewModel model = new MyViewModel();

    model.MyLink = "<a href="http://www.google.com">http://www.google.com</a>"

    return View(model);
}

在视图中(第一行):

@model MyNamespace.ViewModel.MyViewModel

然后在下面,这些 html 标记(数字后的第一行)显示结果(第二行)。但它们都不是您可以点击的实际链接。

1
@Model.MyLink
<a href="http://www.google.com">http://www.google.com</a>

2
<pre>@Html.Raw(@Model.MyLink)</pre>
<a href="http://www.google.com">http://www.google.com</a>

3
@Html.Encode(@Html.Raw(@Model.MyLink))
&amp;lt;a href=&amp;quot;http://www.google.com&amp;quot;&amp;gt;http://www.google.com&amp;lt;/a&amp;gt;

4 
@Html.Encode(@Model.MyLink)
result same as #3.

任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 取决于“将字符串传递给视图”的含义。您的方法使用 IActionResult 并且应该返回一个视图。如果您不想返回视图,那么您可能希望使用 json 响应返回到 ajax 调用,然后使用 jQuery 附加新的 html。
  • 抱歉不清楚。该方法正在返回一个视图(模型)。这就是我在视图中使用的(@Model)。如果我只能弄清楚如何大声笑,我会编辑我的问题。
  • 好吧,推荐要做的就是通过模型传递数据,让视图本身呈现 html。但是,您可以将字符串传递给 javascript 变量,然后使用 jQuery 将其添加到 DOM。我真的不推荐这个,但它在技术上会起作用。
  • 我已经更新了我的问题,以明确控制器返回视图的内容。您能否举例说明您对 jQuery 的建议?
  • 在一些

标签: html asp.net-mvc hyperlink


【解决方案1】:

在控制器中使用

model.MyLink = HttpUtility.HtmlDecode(url);

然后在视图中使用

@Html.Raw(Model.MyLink)

第一个将其转换为使用

【讨论】:

  • 感谢您为我指明正确的方向!看起来 WebUtility.HtmlDecode 相当于 MVC 6(或 ASP.NET Core)RC1 的 HttpUtility.HtmlDecode。这对我有用:在 Controller => model.MyLink = WebUtility.HtmlDecode(model.MyLink);并在视图 => @Html.Raw(@Model.MyLink)
  • 太棒了,很高兴你成功了!对所有额外拖延的 cmets 感到抱歉。我误解了最初的问题,所以一开始我还差得很远,但至少我们最终完成了。
  • 没问题。我可能也应该说得更清楚。最后,是您的解决方案解决了它!再次感谢。
猜你喜欢
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多