2010-06-15 53 views
2

刚开始我在ASP.Net MVC中的旅程,并且在深入挖掘自己之前对某些内容有疑问。在ASP.Net中维护查询字符串MVC

我有一个表,该被寻呼,并且我有2个控制表格上方:

  • 下拉定义的结果的顺序和下一个应用按钮将其
  • 文本框,其限定过滤器和适用旁边按钮

我需要做到的是,如果用户改变了顺序或添加AJAX调用的过滤器我火我的行动升IKE这样:/会员/用户排序= &滤波器= &页= 页面编号?。所以我的控制器操作是:

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

因此,我有3个问题:

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

感谢

回答

2

你可以在格式Membership/Users/{sort}/{filter}/{page}定义一个新的途径。

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

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

当您传递字符串时,如果由于某种原因没有传递查询字符串,您的操作应该处理此操作并仍然呈现视图,它们将仅作为空值传递。

+0

大卫,很好,谢谢。对我的第二个问题有什么想法? :-) – Mantorok 2010-06-15 12:57:42

+0

对不起,我瞥了一眼其余的。我想说,将客户端调用正确地耦合到Web服务是不可能的。你可以在jQuery中定义你自己的类来保存数据,但是我想说你需要使用这个Action来使其值得。 本质上,你将不得不使用查询字符串或以MVC路由引擎将识别的格式对URL进行硬编码,如果您总是要传递这些参数并在应用程序中多次使用路由,我建议使用路线。 – 2010-06-15 13:07:31