2012-07-24 64 views
0

比方說,我有一個簡單的模型:調用子EditorTemplates從父

public Vehicle { 
    public int year; 
} 

而且我有一個從延伸到另一種模式:

public Car : Vehicle { 
    public string make; 
} 

我對汽車的EditorTemplate允許你設定年份。它存儲在瀏覽/共享/ EditorTemplates:

我要爲調用EditorTemplate車輛,但也設置了化妝的能力,增加了汽車創建EditorTemplate。這個想法是,如果我決定向Vehicle添加更多屬性,我只需要更改Vehicle編輯器模板。我的汽車編輯器模板不會改變。

我還以爲像這樣的工作:

@model Car 
@Html.EditorForModel("Vehicle") 
Make: @Html.EditorFor(m => m.make) 

...但無論出於何種原因,事實並非如此。我的觀點是這樣簡單:

@model Vehicle 
@Html.EditorForModel() 

當我通過汽車模型時,該視圖確實最終會調用我的汽車模板,所以工程。但唯一出現的是製作編輯。一年沒有。因此,行@Html.EditorForModel("Vehicle")似乎沒有做任何事情。它不會調用Vehicle EditorTemplate。

任何想法?這些都是/ Views/Shared/EditorTemplates中的editortemplates,我想知道這與它有什麼關係。我試過@Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle"),並附加了一個.cshtml文件,但都沒有成功。

回答

0

至少有一個解決方法。我改變了我的看法:

@model Vehicle 
@Html.EditorForModel("Vehicle") 
@Html.EditorForModel() 

並且工作正常。它調用Vehicle EditorTemplate,然後是Car EditorTemplate。不理想,因爲這意味着我使用Vehicle/Car的每個視圖都需要這樣做。但至少它有效。

但爲什麼不能從另一個EditorTemplate調用EditorTemplate?這感覺就像一個bug ...