好,上溯造型类引用
让我们假设我有两个模型类:
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