繁体   English   中英

ASP.NET MVC4-ICollection循环内的表单元素

[英]ASP.NET mvc4 - form elements inside ICollection loop

我想做一个编辑功能,您可以在其中添加元字段(=类别的特定字段)。

我想在视图中做的是

foreach (App.Models.Metafield field in Model.Category.Metafields)
{
   <div class="field">
        @Html.TextBoxFor(model => field.Name, new { @class = "form-control title" })
        @Html.DropDownListFor(model => field.Type, Model.MetaTypes, new { @class = "form-control type" })
   </div>
}

问题是,当我按下保存按钮时,没有将Metafields添加到viewModel中。 所以我猜应该将field.Namefield.Type替换为其他内容。

这无法通过这种方式工作,因为发送的表单不能包含这些具有相同名称的动态生成的字段。

但是,您可以使用js从这些动态字段中收集数据,并在提交表单之前将其序列化为隐藏字段,然后可以在服务器端对其进行解析。 这是jquery的示例:

$('#save-btn').click(function(e) {
    $hidden = $("#hidden");
    $hidden.val(getDynamicData());
});

function getDyanmicData() {
    var data;
    $fields = $(".field");
    // get children and calculate data

    return data;
}

这可能有点“手动工作”,但是我发现了解正在发生的事情很有用。 对于其他解决方案,您可以在ASP.NET MVC中搜索表单动态表单。

请尝试此代码

@for(int i=0;i<=Model.Category.Metafields.count();i++)
{
   <div class="field">
        @Html.TextBoxFor(m=> m[i].Name, new { @class = "form-control title" })
        @Html.DropDownListFor(m=> m[i].Type, Model.MetaTypes, new { @class = "form-control type" })
   </div>
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM