一千萬個為什麽

搜索

ASP.NET MVC UpdateModel - 字段與屬性?

我將一些常見屬性重構為基類,並且我的模型更新立即失敗。 UpdateModel()和TryUpdateModel()似乎沒有更新繼承的公共屬性。

我無法在MSDN或Google上找到有關這些方法的規則或語義的詳細信息。文檔很簡潔( http://msdn.microsoft.com/en-us /library/dd470933.aspx ),只是說明:

使用控制器當前值提供程序中的值更新指定的模型實例。

求助:MVC.NET確實處理繼承屬性。事實證明這與繼承無關。我的基類是使用公共字段而不是屬性實現的。將它們切換為正式屬性(添加{get; set;})就是我所需要的。這之前我一直在咬我,我一直想要使用簡單的公共字段。我認為字段和屬性在語法上是相同的,並且可以被認為在語義上等同於類的用戶。

最佳答案

這個讓我很好奇。 我為 Person 派生的類 Manager 編寫了一個編輯表單 (畢竟,經理也是人:-))

然後在這個動作方法

 public ActionResult Edit(Manager manager )
        {
            return View(manager);
        }

從使用 Manager (派生類型)作為強類型模型變量的視圖調用,當懸停管理器變量時,它向我顯示基類(它實際上說:base: Person )和經理的一個額外屬性

嘗試了formcollection,這也有效:

 public ActionResult Edit(FormCollection  formCollection )
        {
            Manager manager = new Manager();
            UpdateModel(manager );
            return View(manager);
        }

轉載註明原文: ASP.NET MVC UpdateModel - 字段與屬性?