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()