好,上溯造型類引用
讓我們假設我有兩個模型類:
public class BaseClass{
public Int32 variable {get;set;}
}
public class DerivatedClass : BaseClass{
public Int32 otherVariable {get;set;}
}
並與BaseClass的類型爲模型的視圖。
如果我將DerivatedClass傳遞給View並通過表單檢索信息,那麼它將不會「再次」轉換爲DerivatedClass?
問題是,如果我在視圖(Model.GetType().FullName)中檢索Model的類型,我會得到(沒有意外)DerivatedClass類型。
但是當我檢查張貼的模型,我的控制器中,我得到一個BaseClass的(顯然,它不能被鑄造!)
控制器:
public ActionResult ViewPage(){
return View(new DerivatedClass());
}
[HttpPost]
public ActionResult ViewPage(BaseClass b){
b.GetType().FullName; //Gives me Project.packeges.BaseClass.
DerivatedClass d = (DerivatedClass)b; //Ops, It can't be done. Exception.
}
查看:
@model Project.packeges.BaseClass
<h3>@Model.GetType().FullName</h3>
<!-- Gives me Project.packeges.DerivatedClass -->
...
我的邏輯錯了嗎?無論如何,在檢索POST信息後,在控制器內部執行此操作?
你究竟想要達到什麼目的?具有模型類型的要點是能夠爲MVC創建一個類型,用於*模型化後的數據。指定與您實際想要在視圖中使用不同的類型是自我挫敗。 – 2012-02-24 04:13:57
也許我錯了......但我認爲如果我們可以重用帶有基類模型的視圖到它的子類中,我會很有用......這是OOP的一種方式,不是嗎?代碼重用? – 2012-02-24 18:47:53