如何使用泛型类型推断实现局部视图

时间:2010-12-01 12:59:09

标签: asp.net-mvc-2 generics

我正在研究this样本并遇到问题。为了实现分页,示例扩展了列表并为其添加了分页。然后将此列表用作模型。

在我看来,我想添加一个分页控件。在示例中,他们只是将其添加到页面,但我想使其成为用户控件,因为我计划在多个页面中实现分页。当然这必须是一个强类型的视图,但由于我不能在C#中使用通配符,我不能像这样实现它:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<PaginatedList<?>>" %>

由于我只打算使用PaginatedList中声明的成员而不是List中声明的成员,因此我不需要该类型。

在C#方法中,我们可以通过类型推断来解决这个问题但是它在局部视图中是如何进行的?

1 个答案:

答案 0 :(得分:3)

定义包含要在局部视图中使用的分页属性的界面。让您的PaginatedList<T>类实现此接口。将部分视图输入界面。

public interface IPaginated
{
    int PageIndex  { get; }
    int PageSize   { get; }
    int TotalCount { get; }
    int TotalPages { get; }
}

public class PaginatedList<T> : List<T>, IPaginated
{
   ... should not need to change ...
}

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IPaginated>" %>