是否可以使用 maproute 在 asp.net mvc 中路由多个参数

Posted

技术标签:

【中文标题】是否可以使用 maproute 在 asp.net mvc 中路由多个参数【英文标题】:Is it possible to have route multiple parameters in asp.net mvc using maproute 【发布时间】:2011-06-28 14:58:26 【问题描述】:

我希望用户能够使用 restful 语法访问对象(可以是 JSON 或 XML),而不必使用查询字符串。

因此,他们可以代替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 数组将包含每个 get。

【问题讨论】:

【参考方案1】:

不完全是。

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

【讨论】:

是否可以将 ASP.NET MVC MapRoutes 移动到 XML 文件,而不是以编程方式使用 routes.MapRoute?此外,将其推送到 XML 文件而不是将其编码为 C# 和/或 VB.NET 不是更好的做法吗? @user1338998:您可以编写自己的代码来读取 XML 并调用 MapRoute()。其他人可能已经编写了这样的代码 大声笑,我不想在 .NET 开发人员和 JEE 开发人员之间展开恶性辩论。然而,我想提一下,在 JEE 技术中,配置到 JSF MVC 和 Struts MVC 中的视图的映射总是在像 faces-config.xml 和 struts-config.xml 这样的 XML 文件中,这是正确的做法,因为我们没有不想重新编译。也就是说,我们可以修改xml,然后重启服务器。【参考方案2】:

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

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

这会将参数作为字符串传递,您可以将其拆分为 / 以获取数组。

【讨论】:

以上是关于是否可以使用 maproute 在 asp.net mvc 中路由多个参数的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC MapRoute超过1个参数问题

ASP.NET Core 2.2 MVC MapRoute 项目到 ASP.NET 3.0 端点 MapAreaControllerRoute “找不到此本地主机页面”

使用asp.net mvc配置路由操作教程

ASP.net MVC 对带有连字符的 URL 的支持

如何摆脱 ASP.Net MVC 中的 Home?

ASP.NET MVC,操纵 URL 结构