0

我之前得到了很多关于这个问题的帮助,但是这个问题还没有完全解决我。我现在被另一件事困住了。我正在从我的控制器返回响应并在 Index.cshtml 中接收它,如下所示:

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

现在我需要将这些数据分配给 slickgrid 有点像这样:

  <script type="text/javascript">

  var from = 0, to = from + rData.length;
//data.length = parseInt(resp.total);
for (var i = 0; i < rData.length; i++) {
    data[from + i] = rData[i];
    data[from + i].index = from + i;
}

onDataLoaded.notify({ from: from, to: to });

   grid = new Slick.Grid("#myGrid", rData, columns, options);

 etc etc...

</script>

现在,问题是,我不知道在哪里接收数据。如,我在哪里把这条线:

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

如果我将它放在标签上方(但在 @Scripts 部分内),我会收到一条错误消息,指出未定义 rData。然后,当我将它放在标签内时,我收到一个语法错误:“IHtmlString HtmlHelper.Raw(String value) (+1 重载) 返回不是 HTML 编码的标记”。

这条线到底应该去哪里?cshtml 页面是否有标准格式,例如哪些部分在哪里?如果是这样,有人可以提供链接或其他东西吗?

4

1 回答 1

0

在 MVC 5 中使用您的代码:-

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

我发现行尾的分号会导致语法错误。

我目前正在使用的解决方案(我的示例是 JQuery 自动完成)也应该适用于您的示例,如下所示。

完全在 HtmlHelper 中创建 javascript 变量代码。这放置在视图的@section 脚本中。

@section Scripts {
    <script type="text/javascript">
        @Html.Raw("var existingPersons = " +  Json.Encode(this.Model.ExistingPersons) + ";" )
        @Html.Raw("var settlementInformation="  + Json.Encode(this.Model.SettlementInformation) + ";")

        $(function () {
            $("#personName").autocomplete({
                source: existingPersons
            });

            $("#settlementInformation").autocomplete({
                source: settlementInformation
            });
        });
    </script>
}

在客户端,这<head>按预期出现在元素中

<script type="text/javascript">
    var existingPersons = ["Person 1","Person 2"];
    var settlementInformation=["Settlement Type 1"];

    $(function () {
        $("#personName").autocomplete({
            source: existingPersons
        });

        $("#settlementInformation").autocomplete({
            source: settlementInformation
        });
    });
</script>

我没有在其他版本的 MVC 中尝试过这个

于 2013-11-28T11:30:09.397 回答