2010-12-17 31 views
0

客戶有一個賬單和送貨地址,所以給出下面的數據庫模式MVC2編輯多個鏈接的客戶地址

  • 客戶(客戶編號)
  • 地址(AddressId)
  • CustomerAddresses(客戶ID, AddressId)

而下面Enitity框架類

public class Customer 
{ 
    public IEnumerable<Address> Addresses { get; set; } 
} 

我輸出我在我看來輸入框,像這樣

<% foreach (var address in Model.Addresses) { %> 

    <%: Html.TextBoxFor(model => address.Address1) %> 

<% } %> 

當我發佈表單值進入DeliveryAddress1和BillingAddress1然後經過迭代的FormCollection鍵,我得到以下值

客戶.address.Address1 = 「DeliveryAddress1,BillingAddress1」

問題是如何區分兩個記錄?

回答

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集合的每個元素渲染模板。

+0

謝謝,這看起來很有趣。我將閱讀WeekendWarrior提供的鏈接,但我可能會放棄,因爲我已經使用EditorTemplates作爲Customer實體。 – 2010-12-20 13:16:08

+0

完美。謝謝 – 2010-12-20 13:34:51