在MVC C#中关闭html条件编译

时间:2013-04-11 07:24:17

标签: 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", "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 如何解决这个问题?

3 个答案:

答案 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)

有两种选择:

  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

运行代码