C# 在MVC中关闭html条件编译#
我写了这个函数C# 在MVC中关闭html条件编译#,c#,javascript,asp.net-mvc,C#,Javascript,Asp.net Mvc,我写了这个函数 <script type="text/javascript"> function saveDelivery() { alert("tttt") var model = @Html.Raw(Json.Encode(Model)); //errror $.ajax({ type: 'POST', url: '@Url.Action("SaveDelivery", "Busi
<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))
,但可能必须将其更改为:var model=Json.parse('@Html.Raw(Json.Encode(model)))
您可以使用Html扩展来输出脚本标记。这也有助于解决VisualStudio中的intellisense问题
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>");
}
}
注意:您需要将扩展类的名称空间添加到web.config中的
元素(视图文件夹中的元素)
首先添加system.web.helper引用然后右键单击此引用属性,并将Copy Locaal=false更改为true
然后用json.Encode运行代码试试这可能会有用var model=“@Html.Raw(json.Encode(model))”+1:这看起来像是一个相当愚蠢的黑客,只是为了绕过工作室的智能感知,但它绝对做到了。我已经添加了一些额外的信息。您需要将这些方法放在一个静态类中,并将名称空间添加到web.config中。@LeeGunn,明白了。萨克斯
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()