MVC4如何动态地将行项添加到EditorFor字段?

Ste*_*kes 7 c# asp.net-mvc-4 knockout.js

我有一个视图模型女巫包含迭代项目.我通过EditorFor()方法将它们放在我的视图中.

视图:

@model Models.MyModel 

@using (Html.BeginForm(@Model.Action, @Model.Controller))
{
    <div class="section" id="Terms">
        @Html.EditorFor(m => m.Terms)
    </div>

    <input type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)

模型:

public class MyModel 
{
    public IEnumerable<Term> Terms  { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

EditorTemplates\Term.cshtml:

@model Models.Term

@if (Model != null) 
{
    <fieldset>
        <legend>Term</legend>

        @Html.HiddenFor(model => model.TermID)

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

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

    </fieldset> 
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在视图中动态添加/删除列表中的项目,例如knockout.js上的这个示例,但是如何保留auto-id的MVC创建??:

http://knockoutjs.com/examples/cartEditor.html

以下是我对此的要求:

  • 添加新条款
  • 删除条款
  • 验证添加的新术语视图

我已经阅读了其他有关SO的问题,但我还没有找到真正明确的答案.knockout.js是可以接受的方式吗?是否有任何使用Knockout和MVC执行此操作的示例?

谢谢!

小智 0

你想要淘汰 MVC http://knockoutmvc.com/CartEditor

您不必为此使用淘汰赛,您真正需要的是具有验证和创建/删除操作的 javascript,这些操作映射到 MVC 方面的静态控制器操作。如何实施取决于您。不过,淘汰赛让这一切变得容易。