首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在asp.net mvc视图中将字符串显示为html

在asp.net mvc视图中将字符串显示为html
EN

Stack Overflow用户
提问于 2013-11-14 22:45:49
回答 3查看 211.4K关注 0票数 108

我有一个控制器,它生成一个包含html标记的字符串。当它显示在视图上时,它显示为包含所有标记的简单字符串。

我尝试使用Html助手对其进行编码/解码以正确显示它,但它不起作用。

string str= "<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>";

在我看来,

@Html.Encode(str)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-14 22:48:31

您已关闭,您想要使用@Html.Raw(str)

@Html.Encode接受字符串并确保所有特殊字符都得到正确处理。其中包括诸如空格之类的字符。

票数 188
EN

Stack Overflow用户

发布于 2013-11-14 22:51:01

您应该改用IHtmlString

IHtmlString str = new HtmlString("<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>");

每当有需要保存HTML的模型属性或变量时,我觉得这通常是一种更好的做法。首先,它更干净一些。例如:

@Html.Raw(str)

对比:

@str

此外,我也认为它比使用@Html.Raw()更安全,因为你的数据是否是HTML的问题被保存在你的控制器中。在有前端开发人员与后端开发人员的环境中,后端开发人员可能更清楚哪些数据可以保存HTML值,从而将此问题保留在后端(控制器)。

只要有可能,我通常尽量避免使用Html.Raw()

另一件值得注意的事情是,我不确定您将str分配到哪里,但有几件事让我担心您可能会如何实现它。

首先,这应该在控制器中完成,而不管您的解决方案(IHtmlStringHtml.Raw)。你应该在你的视图中避免任何这样的逻辑,因为它并不真正属于那里。

此外,您应该使用ViewModel来获取视图的值(同样,最好使用IHtmlString作为属性类型)。看到像@Html.Encode(str)这样的东西有点令人担忧,除非您只是为了简化示例而这么做。

票数 45
EN

Stack Overflow用户

发布于 2016-01-05 21:08:39

对于MVC中的HTML输入字段,我也遇到了类似的问题。分页的网页只显示该字段的第一个关键字。示例:输入字段:"The quick brown fox“显示的值:"The”

解决方法是将变量放在value语句中的引号中,如下所示:

<input class="ParmInput" type="text" id="respondingRangerUnit" name="respondingRangerUnit"
       onchange="validateInteger(this.value)" value="@ViewBag.respondingRangerUnit">
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19980657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档