出色地,
假设我有两个模型类:
public class BaseClass{
public Int32 variable {get;set;}
}
public class DerivatedClass : BaseClass{
public Int32 otherVariable {get;set;}
}
和一个以 BaseClass 类型为模型的视图。
如果我将 DerivatedClass 传递给视图并通过表单检索信息,它不会再次“可转换”到 DerivatedClass 吗?
问题是,如果我在视图中检索模型的类型 (Model.GetType().FullName),我会(毫无意外地)得到一个 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 信息后,无论如何要在控制器内部进行此转换?