【问题标题】:Is it possible to have route multiple parameters in asp.net mvc using maproute是否可以使用 maproute 在 asp.net mvc 中路由多个参数
【发布时间】: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。

【问题讨论】:

    标签: c# asp.net-mvc restful-url maproute


    【解决方案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"}
       );
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      相关资源
      最近更新 更多