2011-06-23 74 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> 

Address類很簡單:

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;} 
} 

有了這個,我有兩個觀點,企業/ Create.cshtml和科爾ges/Create.cshtml,用他們自己的模型。

什麼是使我的應用程序的模型中有地址字段的所有視圖都可以使用這段代碼的最佳方式?

回答

1

您應該製作一個editor template

+0

感謝您的回答,但這個例子並沒有真正的幫助。它有點過時,並且爲了便於解釋做出了假設。在我的應用程序中,模型的Address屬性在視圖創建中不搭建,因此UIHint屬性無效。 –

+0

@Robert:我從來沒有自己做過,所以在這裏我無法真正幫助你,但是你應該能夠爲'Address'類創建一個編輯器模板並使用'EditorFor'來調用它。你不應該需要支撐柱子。你也可以寫一個局部視圖。 – SLaks

+0

我開始在Address模型中強類型化了一個局部視圖,但我似乎無法弄清楚在RenderPartial()調用時要傳遞什麼樣的模型,因爲我不斷收到「最佳重載方法匹配」異常。 –

相關問題