2013-04-11 44 views
4

我写了这个功能HTML条件编译在MVC C#关闭

<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 如何解决售后服务这个错误?

+2

试试这个可能会工作吧 var model =“@ Html.Raw(Json.Encode(Model))”;; – Amit 2013-04-11 07:25:39

回答

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

注意:您需要添加扩展类的命名空间的<system.web.webPages.razor>元素在web.config中(一个在views文件夹中)

+0

+1:这似乎是一个非常愚蠢的黑客,只是为了解决工作室的intellisense,但它绝对是诀窍。 – 2014-06-03 12:41:45

+0

代码在哪里? – Demodave 2015-01-19 18:08:57

+0

@Demodave我添加了一些额外的信息。您需要将方法放在静态类中,并将名称空间添加到web.config。 – 2015-01-20 09:43:24

2

有两种选择:

  1. 不在乎,你确定你的代码(这是警告)
  2. 做这样的事情:var model = '@Html.Raw(Json.Encode(Model))”,但可能你将不得不将其更改为:var model = JSON.parse('@Html.Raw(Json.Encode(Model))')