我写了这个函数
<script type="text/javascript">
function saveDelivery() {
alert("tttt")
var model = @Html.Raw(Json.Encode(Model)); //errror
$.ajax({
type: 'POST',
url: '@Url.Action("SaveDelivery", "Business")',
contentType: 'application/json; charset=utf-8',
data: JSON.serialize(model),
success: function (result) {
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
但
上有错误var model = @Html.Raw(Json.Encode(Model));
它说conditional compilation is turned off
如何解决这个问题?
答案 0 :(得分:3)
您可以使用Html扩展来输出脚本标记。这有助于解决Visual Studio中的智能感知问题。
public static class Extensions
{
public static IHtmlString BeginScript(this HtmlHelper htmlHelper)
{
return new HtmlString("<script type=\"text/javascript\">");
}
public static IHtmlString EndScript(this HtmlHelper htmlHelper)
{
return new HtmlString("</script>");
}
}
然后在你看来:
@Html.BeginScript()
// JavaScript...
var model = @Html.Raw(Json.Encode(Model));
// More JavaScript...
@Html.EndScript()
注意:您需要将扩展类的名称空间添加到web.config中的<system.web.webPages.razor>
元素(views文件夹中的那个)
答案 1 :(得分:2)
有两种选择:
var model = '@Html.Raw(Json.Encode(Model))
',但您可能需要将其更改为:var model = JSON.parse('@Html.Raw(Json.Encode(Model))')
答案 2 :(得分:0)
mvc 4 assembly reference missing for Json.Encode
首先添加system.web.helper refrence
然后右键单击此引用属性并将Copy Local = false更改为true
并使用json.Encode