我在db中有几个维护表,并希望为所有这些表设置可重用的视图。我想做一些像下面的代码片段,但无法弄清楚如何从Razor / HTML传递类型。
public async Task<ActionResult> Index<T>() where T : class
{
return View(await db.Set<T>().ToListAsync());
}
以下是两次尝试。
首先,我尝试将类型名称作为字符串传递然后获取类型。但实体框架并不喜欢这样(db
是继承自System.Data.Entity.DbContext
的类的实例)
@Html.ActionLink("Title", "Action", "Controller", new { type = "MyType" }, null)
public async Task<ActionResult> Index(string type)
{
return View(await db.Set(Type.GetType(type)).ToListAsync());
}
传入字典的模型项的类型是&#39; System.Collections.Generic.List
1[System.Object]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [MyType]&#39;。
其次,我尝试传递类型。
@Html.ActionLink("Title", "Action", "Controller", new { type = typeof(MyType) }, null)
public async Task<ActionResult> Index(Type type)
{
return View(await db.Set(type).ToListAsync());
}
这根本不起作用。参数type
为空。
有关新方法或如何使上述方法之一起作用的任何想法?