4

I wrote this function

 <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);
          }
      });

  }    

but there is error on

var model = @Html.Raw(Json.Encode(Model));

it says conditional compilation is turned off How to slove this?

4

3 回答 3

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 中的元素(视图文件夹中的那个)

于 2013-04-11T08:17:42.337 回答
2

有两种选择:

  1. 不在乎,您确定您的代码(这是警告)
  2. 做这样的事情:var model = '@Html.Raw(Json.Encode(Model))',但可能你必须将其更改为:var model = JSON.parse('@Html.Raw(Json.Encode(Model))')
于 2013-04-11T07:42:07.247 回答
0

Json.Encode 缺少 mvc 4 程序集参考

首先添加 system.web.helper refrence
然后右键单击此 refrence 属性并将 Copy Localaal=false 更改为 true 并使用 json.Encode 运行您的代码

于 2014-01-12T06:26:12.493 回答