2013-10-18 16 views
0

編輯界面,我有一個模型: 菜單MenuComponent的@ HTML.editorForModel()不創建示範

的子類和菜單組件具有兩個屬性:名稱和說明都是字符串

我創建了一個編輯視圖並嘗試使用editorForModel()創建編輯字段。 但它不會爲其創建任何編輯字段。

@using (Html.BeginForm()) 
{ 
    @Html.EditorForModel(); 
    <input type="submit" value="Save" /> 
    @Html.ActionLink("Cancel and return to List", "Index") 
} 

我必須使用@ HTML.EditorFor()創建編輯的Fileds

@using (Html.BeginForm()) 
    { 
     @Html.EditorFor(m => m.Name); 
     @Html.EditorFor(m => m.Description); 
     <input type="submit" value="Save" /> 
     @Html.ActionLink("Cancel and return to List", "Index") 
    } 

爲什麼出現這種情況?

回答

2

這是我對微軟報告了一個錯誤:http://connect.microsoft.com/VisualStudio/feedback/details/636341/modelmetadata-fromlambdaexpression-has-changed-in-asp-net-mvc-3-rtm

基本上編輯和顯示模板只認準性質的確切當前類型的模型,而不是在父類。

他們官方的回答是這樣的:

喜達林(及其他),

這是給大家介紹的ASP.NET MVC 3是 是與貿易的結果,故意改變可以更好地支持 繼承的模型或更好地支持實現 接口的模型。我們最終贊成遺傳模型,這從我們的 經驗是一種更常見的方法。

最根本的問題是,當一個接口由 類,類不真正繼承任何的 接口成員的實現。這裏的關鍵是,因爲它不會繼承接口的成員,所以它也不會繼承這些成員的元數據。

感謝,ASP.NET開發團隊

所以基本上他們並不認爲這是一個錯誤,但它是由設計。

+0

它們是什麼意思關於MEMBER OF INTERFACE? –

+0

我想這是一個在您的模型實現的接口中定義的屬性。 –

+0

爲什麼他們的意思是我的班級不能繼承這些屬性?因爲我可以在我的課堂上實施它們! –