我有一個使用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