我可以从Knockout Foreach模板中获取索引并传递给Html.EditorFor吗?

时间:2015-06-07 12:16:13

标签: javascript c# asp.net-mvc-4 knockout.js

使用MVC 4,我正在寻找一种结合淘汰模板和EditorFor的简单方法。我几乎有我正在寻找的东西:

<div data-bind="template: { name:'cover', foreach: StockItems }"></div>

<script type="text/html" id="cover">                  
@Html.EditorFor(m => m.StockItems[0].Name, "MyTemplate",
                     new { htmlAttributes = new 
                         { data_bind = "value: $data.Name")     

在编辑器模板中,我可以绑定淘汰模板中的值:

@model KnockOut.Models.StockItem   
@Html.TextBoxFor(model => model.Name, ViewData["htmlAttributes"])

这非常有效,几乎是一个很好的简单解决方案,可以满足我的需求。我有一些非常简单的JavaScript来控制添加,删除和发布JSON回到服务器。

我不喜欢的是我在这里硬编码0:m.StockItems [0] .Name,它导致name和id属性生成为:

id="StockItems_0__Name" name="StockItems[0].Name" 

我拥有的每件商品。我可以使用attr:对于id,name和其他任何内容,并使用$index()重新命名相应的内容:

 @Html.EditorFor(m => m.StockItems[0].Name, "MyTemplate", 
                  new { htmlAttributes =new { data_bind = 
                          "value: $data.Name,     
                           attr:id:='StockIten_'+$index()+'.Name'")  

我想可能我需要一个更复杂的EditorFor并使用C#@foreach()而不是Knockout foreach和模板,而我要提出的问题是不可能的。

但是,无论如何我能以某种方式从Knockout模板到EditorFor获取索引吗?

当然,我也非常有兴趣看到解决整个问题的更好方法。

由于

0 个答案:

没有答案