【问题标题】:ASP MVC WebGrid pagination link generationASP MVC WebGrid 分页链接生成
【发布时间】:2014-11-12 03:57:34
【问题描述】:

ASP MVC WebGrid 呈现分页链接,如

http://host/AnyController/AnyAction?Length=4&page=1

任何参数化或自定义的机会

http://host/AnyController/AnyAction/1

为了更好地遵守 MVC 路由约定?

(不重要:顺便说一句,长度是多余的。如果控制器的 Action 方法不知道页面长度,那么这就是问题。)

提前致谢

【问题讨论】:

  • 你能添加你现有的路由定义吗?
  • @Brent:你的意思是如果我有一个参数页面的路由定义,那么 WebGrid 将根据它呈现链接?参数名称是什么? “页面”?
  • @g-pickardou 是和否,添加带有page 参数的路由将意味着该路由将正确地将值传递给您的操作,但是在匹配传入的路由时请求,page 路由将与您的default 路由冲突。简而言之,page 路由必须是唯一的,即 http://host/AnyController/AnyAction/page/1

标签: asp.net-mvc webgrid


【解决方案1】:

处理默认路由冲突的一种方法是这样,因为大多数情况下,当您使用路由时,它会在没有 [HttpGet] 的情况下触发操作方法。您需要做的只是一个 GET,每当您对网络网格进行排序或分页时,它都会尝试获取数据并点击 HttpGet Action,其工作原理如下:

    [HttpGet]
    public ActionResult YourActionMethod()
    {
        return PartialView("YourView",YourModel);
    }

最好的部分是,在排序时,请求也会发送一个名为“sortBy”的参数,你可以在这里使用它并决定你想对绑定的网格模型做什么。您可以使用浏览器中的“开发人员工具”检查排序标头将命中的 URL。您可以随意使用此操作,

注意:默认情况下,它将触发的操作方法与控制器名称相同。

【讨论】:

    猜你喜欢
    • 2012-05-14
    • 2014-02-17
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多