3

当您在 MVC 的 WebGrid 上启用分页和排序时,它会自动在查询字符串中附加排序和页面参数。它是如何做到的?我了解它如何为第 n 页创建链接,但是如果读取查询字符串以知道要生成哪个页面,该怎么办?

真正让我困惑的是,在控制器中,我不必指定页面和排序参数,但它们仍然可以工作。这是什么巫术?

如果我不够清楚,

这是gridview定义

@{ var grid = new WebGrid(Model.Customers, rowsPerPage: 25, canPage: true }); }

这是生成的查询字符串:

/Customer?sort=Notes&sortdir=ASC

和我的 Customer.Index 控制器

//no parameters here. how does WebGrid maintain querystring?
public ActionResult Index() 
{
    ...
}
4

1 回答 1

2

长话短说,它只是从 中提取值HttpContext.Request.QueryString,毕竟这并不是那么神奇。

例如,这里是它访问排序字段的地方:

    public string SortColumn {
        get { 
            if (!_sortColumnSet) { 
                string sortColumn = QueryString[SortFieldName];
                // blah blah blah
            } 
            // blah blah blah
            return _sortColumn;
        } 
        set {
            // blah blah blah omitted for brevity
        } 
    }
于 2012-05-14T21:23:27.517 回答