【发布时间】:2009-08-03 00:56:36
【问题描述】:
我发现了许多类似的问题,但没有找到我想要的答案。我的部分问题是由于无法在属性中使用泛型。
我可能试图让事情变得过于复杂,所以如果你能想到更简单的方法,我会全力以赴。
我的具体问题与 ASP.NET MVC 有关,在 Action 方法上使用属性(过滤器)。我正在尝试创建一个过滤器,对传递给 ViewData.Model 的结果进行分页,如下所示:
[PagedList(PageSize = 2, ListType = typeof(Invoice))]
public ViewResult List()
{
var invoices = invoicesRepository.Invoices; // Returns an IQueryable<Invoice>
return View(Invoices);
}
我的过滤器的 OnActionExecuted 覆盖如下:
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
ViewResult result = (ViewResult)filterContext.Result;
var list = (IQueryable<?>)result.ViewData.Model; // Here I want to use the ListType in place of the ?
// Perform pagination
result.ViewData.Model = list.Skip((Page - 1) * PageSize).Take(PageSize.ToList();
}
我意识到我可以替换我的
var list = (IQueryable<?>)result.ViewData.Model;
有
var list = (IQueryable)result.ViewData.Model;
IQueryable<Object> oList = list.Cast<Object>();
但是我的视图是强类型的,期望一个
IQueryable<Invoice>
不是
IQueryable<Object>
【问题讨论】:
标签: c# asp.net-mvc generics attributes