我被這個問題困住了,我不確定這是否是我對MVC框架,.NET框架或什麼的理解不夠。但是,在這裏可以看到來自任何角落的一些解釋。模型綁定找不到的繼承接口屬性
我在做什麼:使用ASP.NET MVC3模型綁定在視圖中呈現HTML控件。具體來說,我試圖綁定到一個接口而不是一個具體的類。
錯誤:一個ArgumentException「無法找到屬性[blah]。」在頁面加載期間拋出。
代碼:
Interface IFoundation
{
int Id { get; set; }
}
Interface IChild: IFoundation
{
string Name { get; set; }
}
Class Concrete: IChild
{
int Id { get; set; }
string Name { get; set; }
}
的觀點:
@model IChild
@Html.EditorFor(x => x.Id)
當我嘗試加載的觀點,一個ArgumentException從呼叫指出Id屬性不能被拋向EditorFor()找到。但是,如果我反而綁定到具體類,綁定工作正常。
所以沒有人知道爲什麼EditorFor()將無法解析基接口的繼承屬性?
嘗試使用抽象類。 – wnascimento
這就是我開始做的:編寫實現我的接口的抽象類。然後我的具體類可以繼承和重寫摘要,並且(當前)我也有我的視圖綁定到摘要。不知道綁定到抽象基類是否會對長期運行的視圖起作用 - 下面的Kaleb建議爲綁定實現ViewModel類。我現在不願意開始這條路,但我最終可能會在那裏結束。 –
Kaleb的建議非常好,Automapper/ViewModels是一個不錯的選擇。 – wnascimento