Asp.net mvc 4 如何在服务器循环中使用淘汰视图模型?

Asp.net mvc 4 如何在服务器循环中使用淘汰视图模型?,asp.net-mvc-4,razor,knockout.js,Asp.net Mvc 4,Razor,Knockout.js,我想使用Html助手和Knockout来创建数据从服务器到客户端的无缝转换,然后在回发时再次返回到服务器 我的ViewModel有几个属性,然后是一个项目数组。我需要知道如何在ASP.NET Razor中迭代我的数组,同时将敲除绑定分配给数组中的各个元素 以下是我目前掌握的情况: @for (int i = 0; i < Model.Fields.Count; i++) { <div name="customFormField" data-bind="with: Fie

我想使用Html助手和Knockout来创建数据从服务器到客户端的无缝转换,然后在回发时再次返回到服务器

我的ViewModel有几个属性,然后是一个项目数组。我需要知道如何在ASP.NET Razor中迭代我的数组,同时将敲除绑定分配给数组中的各个元素

以下是我目前掌握的情况:

@for (int i = 0; i < Model.Fields.Count; i++)
{   
    <div name="customFormField" data-bind="with: Fields[@i]">
        <div class="form-group">
            @Html.LabelFor(m => m.Fields[i].SqlDataType)
            @Html.ListBoxFor(m => m.Fields[i].SqlDataType, new SelectList(selectDataTypeOptions), new { @class = "form-control", data_bind = "value: SqlDataType" })
        </div>
    </div>  
}
编辑2:本例显示了我尝试文本绑定时的情况,但我已经尝试了两种方式


编辑3:我将输出Html复制到页面上的另一个位置,它也没有呈现,直到我从包含div中删除了data bind=with:Fields[n],所以问题似乎出现了。但是,如果我从实际文件的父级中删除它,我会从data bind=value:SqlDataType中得到一个绑定错误,data bind=with:Fields[I]有效吗?[@i]位是什么?此外,字段[i]在HTML中编译成什么?它似乎可以工作,即没有绑定错误。因为这只是一个简单的例子,它不应该显示出任何东西本身。@i是razor语法,用于引用它所在的服务器循环迭代器。我将在输出中进行编辑。因此我非常确定with:Fields[]不起作用,尽管它正确地输出了所有内容,例如with:Fields[0],with:Fields[1]等等,并且没有抛出绑定错误,但我认为它不喜欢绑定中的索引。在应用绑定之前,g是什么。
<script>
    function viewModel() {
        this.addField = function() {
            alert("wut");
        }
    }

    $(function (){
        var jsonModel = @Html.Raw(Json.Encode(Model));
        var mvcModel = ko.mapping.fromJS(jsonModel);

        var customFormTemplateViewModel = new viewModel();
        var g = ko.mapping.fromJS(customFormTemplateViewModel, mvcModel);

        ko.applyBindings(g);
    });
</script> 
    <div name="customFormField" data-bind="with: Fields[0]">
        <div class="form-group">
            <label for="Fields_0__SqlDataType">SqlDataType</label>
            <select class="form-control" data-bind="text: SqlDataType" id="Fields_0__SqlDataType" multiple="multiple" name="Fields[0].SqlDataType"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
        </div>
    </div>  
    <div name="customFormField" data-bind="with: Fields[1]">
        <div class="form-group">
            <label for="Fields_1__SqlDataType">SqlDataType</label>
            <select class="form-control" data-bind="text: SqlDataType" id="Fields_1__SqlDataType" multiple="multiple" name="Fields[1].SqlDataType"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
        </div>
    </div>  
    <div name="customFormField" data-bind="with: Fields[2]">
        <div class="form-group">
            <label for="Fields_2__SqlDataType">SqlDataType</label>
            <select class="form-control" data-bind="text: SqlDataType" id="Fields_2__SqlDataType" multiple="multiple" name="Fields[2].SqlDataType"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
        </div>
    </div>  
    <div name="customFormField" data-bind="with: Fields[3]">
        <div class="form-group">
            <label for="Fields_3__SqlDataType">SqlDataType</label>
            <select class="form-control" data-bind="text: SqlDataType" id="Fields_3__SqlDataType" multiple="multiple" name="Fields[3].SqlDataType"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
        </div>
    </div>  
    <div name="customFormField" data-bind="with: Fields[4]">
        <div class="form-group">
            <label for="Fields_4__SqlDataType">SqlDataType</label>
            <select class="form-control" data-bind="text: SqlDataType" id="Fields_4__SqlDataType" multiple="multiple" name="Fields[4].SqlDataType"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
        </div>
    </div>