2013-08-19 24 views
0

我之前在这个问题上得到了很多帮助,但这个问题还没有完全解决。我现在被困在另一件事上了。我返回从我的控制器的响应,并接受它在Index.cshtml这样的: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

在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> 
} 

此时出现在预期

<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

的其他版本试过这个 <head>元素客户端