MVC2

2010-12-17 7 views
0

お客様はとてもMVC2

  • 顧客(CustomerIdの)
  • アドレス(あるAddressId)
  • CustomerAddresses(CustomerIdの、以下のデータベーススキーマ与えられ、請求および配信アドレスを持っていますあるAddressId)

そして次Enitity Frameworkクラス

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

I出力、私の入力ボックス私の見解ではそう

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

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

<% } %> 

私はDeliveryAddress1とBillingAddress1を入力した後、フォームの値を投稿して、FormCollectionキーを反復するときのように、私は

カスタマー以下の値を取得.address.Address1 = "DeliveryAddress1、BillingAddress1"

質問はどうやって区別できますか? 2つのレコード?

答えて

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が提供するリンクを読むつもりですが、すでにCustomerエンティティ用のEditorTemplatesを使用しているので、これを見てもいいかもしれません。 –

+0

パーフェクト。ありがとう –