2011-02-28 42 views
1

我是新來MVC3和剃刀所以這可能是顯而易見的,但沒有googlefu量內的視圖模型已經找到了我一個答案。使用HTML.EditFor對父視圖模型

我有一個叫做用戶視圖模型,用戶裏面我有一個名爲地址第二視圖模型。

地址用於所有的地方,所以我打算在具有以下\

的ViewModels:

  1. 用戶 - > {FNAME,LNAME,地址}
  2. 業務 - > {公司名稱,地址}
  3. 家 - > {號碼,地址}
  4. 地址 - > {addyline1,addyline2,市,州,郵編}

阿拉... user.address.addyline1,business.address.addyline1

所有這些都會在他們裏面的地址。

@Html.EditorFor(model => model.address) 

工作正常,但不使用我創建的模板

,則須─> shared-> editortemplate-> address.cshtml

@Html.EditorFor(model => model.address, "Address") 

不工作在所有。

回答

1

我同意@jbtule。只是從部分視圖的名稱中刪除文件擴展名,你應該沒問題。

您可以通過另一件事來控制您的對象如何在不必每次指定局部視圖模板的情況下進行渲染,即創建一個稱爲EditorTemplate的對象。以下是你的操作方法:

在ASP.NET MVC解決方案的Views->Shared文件夾下創建一個名爲EditorTemplates的文件夾。 在該文件夾中創建一個強類型的視圖,其名稱要用於(在你的情況下,它應該被稱爲Address.cshtml)編輯器類型的名稱匹配,並且您還可以設置腳手架模板Edit有一個現成的-go編輯器爲您生成。你全都準備好了!所有剩下的就是添加

這裏是關於如何做到這一點的example(注意它使用ASP.NET MVC2,當然還有ASPX視圖引擎,但是這個想法是一樣的)。

希望這有助於;)

+0

試過了,既沒有工作:@ Html.EditorFor(model => model.address,「〜/ Views/Shared/_AddressPartial.cshtml」)以及@ Html.EditorFor(model => model.address,「_AddressPartial 「) – Stephen 2011-02-28 21:22:44

+0

我想問題可能是elsewere,我已經嘗試了兩種方法(發佈之前),並且都工作得很好:s – AbdouMoumen 2011-02-28 21:34:35

+0

我最終從頭開始了一個項目。我只是將文件從舊文件複製並粘貼到新文件,一切正常。我已經做了多次,現在它工作正常。 – Stephen 2011-03-01 15:05:15

1

那麼你不使用放置「cshtml」部分通常當你把模板名稱可能"_AddressPartial"會適合你,但我想你只想省略該參數,並把你的自定義剃刀模板在「 〜/查看/共享/ EditorTemplates/address.cshtml」

1

該文件夾的名稱,將您Address.cshtml

EditorTemplates 

,而不是EditorTemplate(一個小s可以使一個很大的區別)。