2013-04-11 49 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))')