2011-06-23 7 views
0

私はビジネスアプリケーションのラインを構築することだし、アドレスをレンダリングするとき、私は私が実際にコピーして、どこにでも貼り付けをしたくないビューコードのこの部分を持っている:強力な型付けされたビューの一部をRazorで再利用するにはどうすればよいですか?

<div class="editor-field"> 
    @Html.DropDownListFor(model => model.Address.State, new 
     SelectList(UsaStates.StateDictionary.OrderBy(s => s.Value), "Key", "Value", 
      "Iowa"), "-- Select State --") 
    @Html.ValidationMessageFor(model => model.Address.State) 
</div> 

アドレスクラスは非常にありますシンプル:

public class Address 
{ 
    public string Address1 { get; set; } 
    public string Address2 { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public int Zip { get; set; } 
    public string County { get; set; } 
} 

モデルクラスはそうのような住所を実装します。これにより

public class Business 
{ 
    // .. other properties 
    Address Address {get;set;} 
} 

public class College 
{ 
    // .. other properties 
    Address Address {get;set;} 
} 

、私は2つのビュー、企業/ Create.cshtmlとコレを持っていますges/Create.cshtmlを独自のモデルで作成します。

このコードのスニペットをアプリケーションのすべてのビューで使用できるようにする最良の方法は、モデルにアドレスフィールドがあるものですか?

答えて

1

editor templateを作成してください。

+0

答えをいただきありがとうございますが、例は本当に役立たなかった。それは時代遅れであり、説明を簡単にするための前提となります。私のアプリでは、モデルのAddressプロパティはビューの作成に足場を張っていないので、UIHint属性は有効ではありません。 –

+0

@Robert:自分で作ったことは一度もありませんでしたので、ここで本当に助けてもらえませんが、 'Address'クラス用のエディタテンプレートを作成し、' EditorFor'を使って呼び出すことができます。列を足場にする必要はありません。また、部分的なビューを作成することもできます。 – SLaks

+0

Addressモデルで強く型付けされた部分的なビューから始めましたが、RenderPartial()呼び出しでモデルとして渡すべきものがわからないようです。 –

関連する問題