2011-06-28 37 views
3

我希望用户能够使用restful语法访问对象(可以是JSON或XML),而不必使用查询字符串。是否有可能在asp.net mvc中使用maproute路由多个参数

因此,而不是http://mywebsite.com/objects/get=obj1&get=obj2&get=someotherobject/他们可以做一些像http://mywebsite.com/objects/obj1/obj2/和xml/JSON将被返回。他们可以按任何顺序列出对象,就像查询字符串一样。

在asp.net的MVC你映射的路线,像这样:

 routes.MapRoute(
      "MyRoute", 
      "MyController/MyAction/{param}", 
      new { controller = "MyController", action = "MyAction", param = "" } 
     ); 

我希望做这样的事情:

 routes.MapRoute(
      "MyRoute", 
      "MyController/MyAction/{params}", 
      new { controller = "MyController", action = "MyAction", params = [] } 
     ); 

其中params阵列将包含分别获得。

回答

3

不完全。

您可以通过映射{*params}来创建通配符参数。
这会给你一个包含所有参数的字符串,然后你可以使用.Split('/')

+0

是否可以将ASP.NET MVC MapRoutes移动到XML文件,而不是通过编程方式使用routes.MapRoute?另外,将它推到XML文件,而不是将它编码到C#和/或VB.NET,会不会是更好的做法? – user1338998

+0

@ user1338998:您可以编写自己的代码来读取XML并调用MapRoute()。其他人可能已经编写了这样的代码 – SLaks

+0

LOL,我不想在.NET开发人员和JEE开发人员之间展开恶性争论。不过,我想提到的是,在JEE技术中,配置JSF MVC和Struts MVC中的视图的映射总是在像faces-config.xml和struts-config.xml这样的XML文件中,这是正确的做法,因为我们不会不想重新编译。换句话说,我们可以修改xml,然后重新启动服务器。 – user1338998

3

你可以使用一个包罗万象的参数

routes.MapRoute(
     "MyRoute", 
     "MyController/MyAction/{*params}", 
     new { controller = "MyController", action = "MyAction"} 
    ); 

这将通过PARAMS如,你可以拆分在/获得一个数组的字符串。

相关问题