在视图定义中使用类型参数

时间:2017-02-01 19:58:21

标签: c# asp.net asp.net-mvc entity-framework razor

我在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为空。

有关新方法或如何使上述方法之一起作用的任何想法?

0 个答案:

没有答案