我有一个使用EF Table Per Type设置的数据库,并且我正在尝试在Razor中为详细信息页面编写详细信息视图。棘手的部分是我有一个基类Product
和两个派生类VideoProduct
和DatabaseProduct
,我想在列表视图中显示它们,并能够为每种类型提供详细信息视图。我无法确定如何根据从数据库返回的对象的类型确定返回哪个视图。下面是一些代码:如何基于模型的“类型”显示正确的视图?
机型:
public abstract class Product
{
// some properties
}
public class DatabaseProduct
{
int SpecialInvoiceID { get; set; }
}
public class VideoProduct
{
public virtual ICollection<FilmsCollection> FilmsCollectionIDs { get; set; }
public virtual ICollection<OtherCollection> OtherCollectionIDs { get; set; }
}
控制器:
public ActionResult Details(int id)
{
var product = db.Products.Find(id); // could be a VideoProduct or a DatabaseProduct
if (product == null)
return RedirectToAction("Index");
return View("Details", product);
}
VIEW:
什么我在这里做,让细节查看以显示任何类型的模型?或者我可以在Controller中做什么来调用不同的视图来显示不同的模型类?或者我可以使用DisplayForModel?
我试图通过Google找到一个例子,但我无法获得任何有用的信息。任何指导将不胜感激。谢谢!
我结束了使用DisplayForModel,但其实这就是我一直在寻找。谢谢! – samandmoore 2011-01-21 16:57:42