2017-11-26 8 views
0

私はAddressStateという2つのクラスを持っています(データベースには対応するテーブルがあります)。外来キーでリンクされたプロパティを表示しているレイジービュー

は、2つのプロパティがありますIdName

アドレスを持っている私のアドレスクラスで私はSTATEIDが外部キー

[Required] 
[ForeignKey("State")] 
public int AddressStateId { get; set; } 
としてマークされてい、

またStateIdプロパティ(とりわけ)

私の見解では、Addressオブジェクトのプロパティを表示しているとき、どうすればいいですか? StateIdの代わりに状態名を再生しますか?私はAddressクラスで新しいプロパティが必要だとは思わない私はちょうど他のテーブルを参照する必要があると思う。

私は今それをやっている方法は、あなたのビューが強くAddressエンティティに入力され、

@Html.DisplayFor(modelItem => modelItem.AddressStateId) 

答えて

1

あなたはAddressクラス

public class Address 
{ 
    public string AddressLine1 { set;get;} 
    public int StateId { set;get;} 
    public virtual State State { set;get;} 
} 
public class State 
{ 
    public int Id { set; get; } 
    public string Name { set;get;} 
} 

と仮定するタイプStatevirtualプロパティを追加する必要ありクラスでは、ビュー内でStateナビゲーションプロパティにアクセスし、Nameプロパティ値

を使用できます210
@model Address 
<h1>@Model.State.Name</h1> 
<p>Or use the DisplayFor helper</p> 
@Html.DisplayFor(m=>m.State.Name) 
+0

ああ、/ facepalm。既にそこにナビゲーションプロパティがあるだけで、それを使うのを忘れてしまった。また、私のコントローラでは、(dbコンテキスト変数を介して)アドレスを取得したときに、 '.Include(" States ")'を追加しなければなりませんでした。 Ex 'var addresses = db.Addresses.Include(" State ");' –

+0

あなたのビューは厳密にアドレスのリストにタイプされていますか? – Shyju

+0

Addressクラスと別のクラスを含むクラスに型指定されます。だから私はModel.AddressによってAddressプロパティにアクセスしなければならない。<どんな小道具> –