ASP.NET MVC编辑集合最佳实践 - 您的意见

Kyl*_*est 13 collections asp.net-mvc

鉴于以下类,您对处理创建/编辑的最佳方法有何看法,其中Attributes.Count可以是任何数字.

public class Product {
  public int Id {get;set;}
  public string Name {get;set;}
  public IList<Attribute> Attributes {get;set;}
}

public class Attribute {
  public string Name {get;set;}
  public string Value {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

用户应该能够在同一视图中编辑产品详细信息(名称)和属性详细信息(名称/值),包括添加和删除新属性.

处理模型中的更改很容易,处理UI和ActionMethod方面的最佳方法是什么?

Ser*_* S. 14

请看Steve Sanderson的博客文章编辑可变长度列表,ASP.NET MVC 2样式.

调节器

您的操作方法接收您的本机域模型Product并保持非常简单:

public ActionResult Edit(Product model)
Run Code Online (Sandbox Code Playgroud)

视图

Edit.aspx

<!-- Your Product inputs -->
<!-- ... -->

<!-- Attributes collection edit -->
<% foreach (Attribute attr in Model.Attributes)
   {
       Html.RenderPartial("AttributeEditRow", attr);
   } %>
Run Code Online (Sandbox Code Playgroud)

AttributeEditRow.ascx

注意帮助扩展 Html.BeginCollectionItem(string)

<% using(Html.BeginCollectionItem("Attributes")) { %>
    <!-- Your Attribute inputs -->
<% } %>
Run Code Online (Sandbox Code Playgroud)

也可以添加和编辑新属性.看帖子.


tva*_*son 3

使用 FormCollection 并迭代键/值对。想必您可以使用命名方案来确定哪些键/值对属于您的属性集。

[AcceptVerbs( HttpVerb.POST )]
public ActionResult Whatever( FormCollection form )
{
 ....
}
Run Code Online (Sandbox Code Playgroud)