我有數據庫映射到一個實體框架,然後我有控制器,視圖來顯示這些表(實體)。我正在考慮創建一個通用視圖來顯示來自不同表格的數據。如何使用MVC3中的一個視圖/模型和實體數據模型來處理多個表?
要顯示一個表,我有以下幾點:
public class ATaskController : Controller
{
private MY_DATA_SQLEntities db = new MY_DATA_SQLEntities();
//
// GET: /ATask/
public ViewResult Index()
{
return View(db.ATask.ToList());
}
}
筆者認爲:
@model IEnumerable<JRAM_MVC.ATask>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.position)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
以上只是一個表,它完美的作品。但是我有很多表,我不想爲每個表創建單獨的控制器和視圖。我所做的是如下:
在視圖中的一部分,我改爲:
@model IEnumerable<JRAM_MVC.ATask>
@*foreach (var item in Model)
{
<tr>
@{
Type t = item.GetType();
foreach (PropertyInfo k in t.GetProperties())
{
<td>@t.GetProperty(k.Name).GetValue(item,null)</td>
}
}
這個工程。但麻煩是:
return View(db.ATask.ToList()); // in controller
和
@model IEnumerable<JRAM_MVC.ATask>
我如何才能讓他們的動態,使他們能夠處理不同的表單單是他們的名字?例如,我將在一個字符串變量中獲取表名,程序將動態創建「返回視圖(db.entityfortablename.ToList())並在視圖中」@model IEnumerable?
JRAM_MVC.ATask是一個對象集
我試過了。它生成如下錯誤消息:當我嘗試使用Model.first()時,System.Collections.Generic.List'不包含'First'的定義。鑑於此,我使用了「動態myobjects = db.GetType()」。GetProperty(tablename).GetValue(db,null);「然後返回視圖(myobjects)在模型中,我使用了」@model dynamic「 –
2012-03-26 02:06:34