我之前就这个问题得到了很多帮助,但问题并没有完全解决。我现在卡在另一件事上了。我从我的控制器返回一个响应,并在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页面的标准格式,比如哪些部分去哪里?如果是这样,有人可以提供链接或其他东西吗?
答案 0 :(得分:0)
在MVC 5中使用您的代码: -
var rData = @Html.Raw(Json.Encode(Model.WarehouseResults));
我发现行尾的分号会导致语法错误。
我目前使用的解决方案(我的示例是用于JQuery自动完成)也适用于您的示例,如下所示。
在HtmlHelper中完全创建javascript变量代码。这是放在视图的@section Scripts中。
@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中试过这个