У меня есть база данных, сопоставленная с платформой сущностей, и затем у меня есть контроллеры, представления для отображения этих таблиц (сущностей). Я думаю создать одно общее представление для отображения данных из другой таблицы.
Для отображения одной таблицы у меня есть следующее:
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 - это ObjectSet