我想创建一个编辑功能,您可以在其中添加元数据(=类别的特定字段)到类别。
我想在视图中做的是
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>
}
问题是当我点击保存按钮时,Metafield没有添加到viewModel。所以我想field.Name
和field.Type
应该替换为其他内容..
答案 0 :(得分:0)
这不能以这种方式工作,因为发送的表单不能包含这些动态生成的同名字段。
但是,您可以使用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中搜索表单动态表单。
答案 1 :(得分:0)
请尝试此代码
@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>
}