Asp.net mvc 4 使用编辑器模板动态添加新字段

Asp.net mvc 4 使用编辑器模板动态添加新字段,asp.net-mvc-4,mvc-editor-templates,Asp.net Mvc 4,Mvc Editor Templates,在我的MVC4项目中,我有一个带有产品视图模型集合的类别视图模型。我使用编辑器模板渲染单个产品视图模型,并将产品视图模型集合传递给它: 类别视图模型: @model CategoryViewModel @using MVC4PartialViews.Models.ViewModels <div class="editor-field"> @Html.EditorFor(model => model.CategoryName) @Html.ValidationM

在我的MVC4项目中,我有一个带有产品视图模型集合的类别视图模型。我使用编辑器模板渲染单个产品视图模型,并将产品视图模型集合传递给它:

类别视图模型:

@model CategoryViewModel
@using MVC4PartialViews.Models.ViewModels

<div class="editor-field">
    @Html.EditorFor(model => model.CategoryName)
    @Html.ValidationMessageFor(model => model.CategoryName)
</div>

@Html.EditorFor(x => x.Products)
我读过Steve Sanderson的这篇文章,但它看起来很笨拙,他用Guid而不是连续的索引字段来索引他的字段:


TIA

在这里回答时不要迟到

我正在寻找一些你提供给我有用的链接。现在我知道了如何通过使用
EditorFor
中模型的
IEnumerable
属性中的add/remove项动态添加上传文件输入


对于你的解决方案,我认为你可以做任何你想做的事。在模板内部,您可以
foreach
并指定
id
的格式,以签出Jarrett Meyer的博客文章中概述的解决方案。

总结如下。

你做过你想要做的事吗?我有同样的观点,问同样的问题。如果有,你能分享一下吗?Thanks@Display在这篇文章之后,我换了一个名字,但我又回来了。我从上面的Steve Sanderson链接下载了代码示例,该链接有效,但他使用GUID作为索引。我将再试一次,看看是否可以使用连续的index@DisplayName我找到了Steve Sanderson的另一篇文章,他做了我需要的事情,但使用了Knockout.js。我试图将他的代码合并到我的项目中,但是回发到我的控制器将不起作用-它不会返回任何数据。因此,仍在寻找解决方案:-以下是文章:感谢分享您的经验。想要学习knockout js,没有时间,感觉使用它比straighforward ASP.NET MVC方法更合适Steve使用Guids应用此问题是StackOverflow上多个类似问题的重复。搜索“编辑变量集合/列表”及类似内容
<div class="editor-field">
    @Html.EditorFor(model => model.ProductName)
    @Html.ValidationMessageFor(model => model.ProductName)
</div>
// etc.
<div class="editor-field">
    <input class="text-box single-line" id="Products_0__ProductName" name="Products[0].ProductName" type="text" value="Add 1st product for this Category" />
    <span class="field-validation-valid" data-valmsg-for="Products[0].ProductName" data-valmsg-replace="true"></span> 
</div>
Products[2].ProductName