Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在视图中以纯文本形式获取MVC模型字符串_Javascript_Asp.net Mvc_Razor_Html Entities_Html Encode - Fatal编程技术网

Javascript 如何在视图中以纯文本形式获取MVC模型字符串

Javascript 如何在视图中以纯文本形式获取MVC模型字符串,javascript,asp.net-mvc,razor,html-entities,html-encode,Javascript,Asp.net Mvc,Razor,Html Entities,Html Encode,我正在向具有字符串的视图发送模型。这些字符串是html编码的,我不需要它们。有没有办法不使用html编码将模型发送到视图 型号: public class Package { public string String { get; set; } } 控制器: public ActionResult GetPackage() { Package oPackage = new Package(); oPackage.String = "using lots of \" an

我正在向具有字符串的视图发送模型。这些字符串是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
(功能(){
//这里@Model.String有很多';和“
var String=“@Model.String”.replace(/&&39;/g,”).replace(/“/g,”);
//这里的字符串看起来没问题,因为我运行了两个replace函数。但是可以将字符串清理到视图中吗?
})();
运行replace函数是一种解决方案,但是只获取字符串而不进行编码将是一件好事

@Html.Raw(yourString)
这应该起作用:

@model Models.Package
<script type="text/javascript">
    (function () {
      var String = "@Html.Raw(Model.String)";
})();
</script>
@model Models.Package
(功能(){
var String=“@Html.Raw(Model.String)”;
})();

由于我认为这与我之前的答案不同,我在这里放了另一个答案。
System.Web.HttpUtility.JavaScriptStringEncode(Model.String,true);

@model Models.Package
(功能(){
var String=“@System.Web.HttpUtility.JavaScriptStringEncode(Model.String,true)”;
})();

希望这有帮助。:)

首先,您需要将字符串转换为。
然后需要防止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>
@使用System.Web
@模型包
var s=“@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.AnyString,addDoubleQuotes:false))”;

这是删除html编码的正确答案。但是,问题在于现在纯文本中的“太多”。这就破坏了“”中文本的封闭性。返回到html编码的文本和.replace()。因为答案删除了问题所要求的“获取不带编码的字符串”内容,所以我发现这是最准确的答案。
@model Models.Package
<script type="text/javascript">
    (function () {
      var String = "@System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true)";
})();
</script>
@using System.Web

@model Models.Package

<script type="text/javascript">
    var s = "@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.AnyString, addDoubleQuotes: false))";
</script>