【问题标题】:Maintaining the query string in ASP.Net MVC在 ASP.Net MVC 中维护查询字符串
【发布时间】:2010-06-15 12:34:24
【问题描述】:

我刚刚开始我的 ASP.Net MVC 之旅,在深入研究之前我有一个疑问。

我有一个分页的表格,表格上方有 2 个控件:

  • 定义结果顺序的下拉菜单和旁边的应用按钮
  • 定义过滤器的文本框和旁边的应用按钮

我需要实现的是,如果用户更改订单或添加过滤器,我会触发 AJAX 调用到我的操作,如下所示:/Membership/Users?sort=value &filter=&page=页码。所以我的控制器动作是:

   // GET Membership/Users?sort=&filter=&page=
   public ActionResult Users(string sort, string filter, string page)

所以我有 3 个问题:

  • 这是正确的方法吗?
  • 要确保查询字符串得到维护,记住操作几乎总是由 Jquery/Ajax 函数调用,最好的方法是什么?
  • 如果我想直接链接到传递参数的此操作,是否需要对查询字符串进行硬编码?

谢谢

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    您可以以Membership/Users/{sort}/{filter}/{page} 的格式定义新路由。

    routes.MapRoute(
            "MembershipList",                                              
            "Membership/Users/{sort}/{filter}/{page}",             
            new { controller = "Membership", action = "Users", sort = "", filter = "", page = "" }
        );
    

    但是,如果参数是可选的,那么我建议您保持原样并且不要定义路由。

    当您传递字符串时,如果由于某种原因没有传递查询字符串,则它们将简单地作为 null 传递,您的操作应处理此问题并仍呈现视图。

    【讨论】:

    • 大卫,非常感谢。对我的第二个问题有什么想法吗? :-)
    • 抱歉,我浏览了其余部分。我会说不可能将您的客户端调用正确地耦合到 Web 服务。您可以在 jQuery 中定义自己的类来保存数据,但我想说您需要大量使用此 Action 才能使其物有所值。本质上,您将不得不使用查询字符串或以 MVC 路由引擎将识别的格式对 URL 进行硬编码,如果您总是要传递这些参数并在应用程序中多次使用路由,那么我'd 建议使用路线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多