我將一些常見屬性重構爲基類,並立即啓動了模型更新失敗。 UpdateModel()和TryUpdateModel()似乎沒有更新繼承的公共屬性。ASP.NET MVC UpdateModel - 字段與屬性?
我無法在MSDN和Google上找到關於這些方法的規則或語義的詳細信息。該文檔是簡潔(http://msdn.microsoft.com/en-us/library/dd470933.aspx),簡單的聲明:
更新使用來自控制器的當前值提供程序的值指定的模型實例。
解決:MVC.NET的確處理繼承的屬性就好了。事實證明,這與繼承無關。我的基類是用公共字段實現的,而不是屬性。切換到正式屬性(添加{get; set;})是我所需要的。這讓我很難受,我一直想用簡單的公共領域。我認爲字段和屬性在語法上是相同的,對於類的用戶可以認爲它們在語義上是等價的。
感謝您確認我的問題在其他地方。看我的編輯。是的,用GetProperties()反射正是問題,與GetFields()相反。我期望看到模型綁定更新公共屬性和字段,因爲屬性是用於僞裝成字段記法的語法糖。但是,這是我缺乏MVC.NET知識。現在我知道了,它很簡單,但我不確定我喜歡分化。 – codenheim 2010-04-15 20:36:21
>>「頂級」類也是基類。 我的意思是底部,對不起,打字速度很快......我應該說葉類。 – codenheim 2010-04-15 20:37:27