首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC中的多个可选参数不起作用。

MVC中的多个可选参数不起作用。
EN

Stack Overflow用户
提问于 2014-03-19 13:30:43
回答 2查看 1.8K关注 0票数 0

我的要求是为urls提供可选的参数。urls应该类似于。

  1. http://test.com/118939
  2. http://test.com/118939/test/2000/

我写了下面的routes

代码语言:javascript
复制
public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

            routes.MapRoute(
                "FAQDefault",
                "FAQ",
                new { controller = "FAQ", action = "Default" });
            routes.MapRoute(null, "{id}", new { controller = "Home", action = "Default", id = UrlParameter.Optional });
            routes.MapRoute("rent", "{id}/{rent}/{unit}", new { controller = "Home", action = "Default", id = UrlParameter.Optional, rent = UrlParameter.Optional, unit = UrlParameter.Optional });
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Default", id = UrlParameter.Optional }, // Parameter defaults
                new string[] { "CDCPortal" });


        }

和控制器写得如下:

代码语言:javascript
复制
 public ActionResult Default(string id, string rent=null,string unit=null){}

它的工作罚款1 url,但不工作的第二url.

EN

回答 2

Stack Overflow用户

发布于 2014-03-19 13:39:14

没有必要这样做,在第一种情况下,您已经这样做了:

second route可以处理any number of parameters

票数 0
EN

Stack Overflow用户

发布于 2014-03-19 13:45:04

您需要为每个组合定义一条路径,如下所示

代码语言:javascript
复制
routes.MapRoute("Default-AllOptional", 
                "Default/{id}/{rent}/{unit}", 
                 new
                 {
                     controller = "Home",
                     action = "Default"
                     // nothing optional 
                 }
);

routes.MapRoute("Defaul-Id-rent-Optional", 
                "Default/{id}/{rent}", 
                 new
                 {
                     controller = "Home",
                     action = "Default",
                     id=UrlParameter.Optional,
                     rent=UrlParameter.Optional

                 }
);

参考Routing Regression With Two Consecutive Optional Url Parameters

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22507476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档