c# - MVC WebGrid如何更新查询字符串

标签 c# asp.net-mvc gridview query-string

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

真正让我困惑的是,在 Controller 中,我不必指定页面和排序参数,但它们仍然有效。这是什么魔法?

如果我不够清楚,

这是gridview的定义

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

这里是生成的查询字符串:

/Customer?sort=Notes&sortdir=ASC

和我的 Customer.Index Controller

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

最佳答案

长话短说,它只是从 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
        } 
    }

关于c# - MVC WebGrid如何更新查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10590684/

相关文章:

c# - 从项目中存在的文件夹中读取文件

c# - 具有多个接口(interface)的 Autofac Open Generic Decorator 导致循环依赖解析

angularjs - Abp 样板 : How to Perform client side translation?

asp.net-mvc - Windows Azure 生产中的异常详细信息屏幕

c# - 用户在 GridView.DataBind 调用期间单击会导致 ArgumentException

c# - 如何打破 BoundField 的 HeaderText

c# - 如何在 GridView 命令字段中调用 JavaScript 函数?

c# - 在 .NET 中,为什么 SerialPort.ReadExisting() 返回一个字符串而不是字节数组?

c# - 如何在这种情况下传递枚举

asp.net-mvc - Dotnet Cli - 发布命令不更改 Web 配置中的环境变量