我正在将模型发送到具有字符串的视图。这些字符串是html编码的,我不需要它们。有没有html编码将模型发送到视图的方法?
型号:
public class Package
{
public string String { get; set; }
}
控制器:
public ActionResult GetPackage()
{
Package oPackage = new Package();
oPackage.String = "using lots of \" and ' in this string";
return View(oPackage);
}
查看:
@model Models.Package
<script type="text/javascript">
(function () {
// Here @Model.String has lots of ' and "
var String = "@Model.String".replace(/'/g, "'").replace(/"/g, "\"");
// Here String looks ok because I run the two replace functions. But it is possible to just get the string clean into the view?
})();
</script>
运行替换函数是一种解决方案,但只是获取没有编码的字符串会很棒。
答案 0 :(得分:11)
@Html.Raw(yourString)
这应该有效:
@model Models.Package
<script type="text/javascript">
(function () {
var String = "@Html.Raw(Model.String)";
})();
</script>
答案 1 :(得分:4)
首先,您需要将字符串转换为Javascript format
然后你需要阻止MVC将其重新编码为HTML(因为它的Javascript,而不是HTML)。
所以你需要的代码是:
@using System.Web
@model Models.Package
<script type="text/javascript">
var s = "@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.AnyString, addDoubleQuotes: false))";
</script>
答案 2 :(得分:3)
我认为这与我以前的答案不同,我在这里放另一个。 System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true);
@model Models.Package
<script type="text/javascript">
(function () {
var String = "@System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true)";
})();
</script>
希望这会有所帮助.. :)