客户具有开票和送货地址,因此给出以下数据库架构
以下Enitity Framework类
public class Customer
{
public IEnumerable<Address> Addresses { get; set; }
}
我在视图中输出我的输入框
<% foreach (var address in Model.Addresses) { %>
<%: Html.TextBoxFor(model => address.Address1) %>
<% } %>
当我在输入DeliveryAddress1和BillingAddress1后发布表单值然后迭代FormCollection键时,我得到以下值
Customer.address.Address1 = “DeliveryAddress1,BillingAddress1”
问题是如何区分这两个记录?
答案 0 :(得分:1)
您应该尝试此链接 - 它有助于多列模型绑定:
http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/
答案 1 :(得分:1)
我建议您使用编辑器模板。这样您就不需要在视图中编写丑陋的循环,并且帮助程序将负责为输入字段生成适当的名称。
因此,在您的主视图中,而不是编写您所显示的所有代码:
<%: Html.EditorFor(x => x.Addresses) %>
然后为地址(~/Views/Home/EditorTemplates/Address.ascx
)
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<YourApp.Models.Address>" %>
<%: Html.TextBoxFor(x => x.Address1) %>
注意编辑器模板的名称和位置。该位置应位于EditorTemplates
文件夹中(也可能位于~/Views/Shared/EditorTemplates/Address.ascx
中),名称应与类名称(Address
)相同。 ASP.NET MVC将负责为模型的Addresses
集合的每个元素呈现模板。