.net mvc路由默认控制器/操作,但没有默认参数

里卡德·里列伯格

我创建了这条路线

          routes.MapRoute( 
                name: "Survey", 
                url: "{controller}/{action}/{surveyid}/{userid}/{hash}", 
                defaults: new { controller = "Home", action = "Survey" }, 
                constraints: new { surveyid = @"\d+", userid = @"\d+" } 
           );

然后当我浏览到

http://localhost:3086/Home/Survey/1/1/3r2ytg

它有效,但是如果我浏览到

http://localhost:3086/1/1/3r2ytg

这是行不通的。

如果我这样改变路线

        routes.MapRoute(
            name: "Survey",
            url: "{surveyid}/{userid}/{hash}",
            defaults: new { controller = "Home", action = "Survey" },
            constraints: new { surveyid = @"\d+", userid = @"\d+" }
        );

恰好相反(这是有道理的)。

但是我对第一个路由感到好奇,我认为这两个URL都应该起作用,因为当没有给出任何URL时,它应该抓住默认的控制器和动作。

更新资料

最后我只用了这个

        routes.MapRoute(
            name: "Survey",
            url: "{surveyId}/{userId}/{hash}",
            defaults: new { controller = "Home", action = "Survey" },
            constraints: new { surveyId = @"\d+", userId = @"\d+" }
        );

因为那是我想要的行为。但是当我打电话时

@Url.Action("Survey", "Home", new 
{ 
    userId = @Model.UserId, 
    surveyId = survey.Id, 
    hash = HashHelpers.CreateShortenedUrlSafeHash(@Model.SecretString + survey.Id.ToString() + @Model.UserId.ToString())
})

它产生

/Admin/Home/Survey?userId=25&surveyId=19&hash=2Norc

而不是一条光亮的道路。我可以用Url.RouteUrl强制它,但我认为它应该已经自动选择了这个。

穆拉里·穆鲁格桑

您需要为每个组合创建路线。

查看此Phil Haack文章

  routes.MapRoute( 
            name: "Survey", 
            url: "{controller}/{action}/{surveyid}/{userid}/{hash}", 
            defaults: new { controller = "Home", action = "Survey" }, 
            constraints: new { surveyid = @"\d+", userid = @"\d+" } 
  );

  routes.MapRoute(
        name: "Survey",
        url: "{surveyid}/{userid}/{hash}",
        defaults: new { controller = "Home", action = "Survey" },
        constraints: new { surveyid = @"\d+", userid = @"\d+" }
  );

使用MVC3中的两个可选参数检查此路由不起作用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

路由如何与 asp.net mvc 中的默认控制器和操作一起使用

来自分类Dev

如何在控制器ASP.NET MVC 5上禁用默认路由

来自分类Dev

我如何配置ASP.NET Core路由以路由到控制器(没有可选动作)(如果存在),然后回退到默认路由?

来自分类Dev

ASP.NET MVC仅对一个控制器缺少默认操作

来自分类Dev

ASP.NET MVC仅对一个控制器缺少默认操作

来自分类Dev

如何在asp.net C#中为某些控制器操作设置默认路由?

来自分类Dev

如何在asp.net C#中为某些控制器操作设置默认路由?

来自分类Dev

.Net核心MVC控制器,带有可选的参数路由规则,以空值打破

来自分类Dev

ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

来自分类Dev

没有控制器或动作名称的ASP.NET MVC路由

来自分类Dev

ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

来自分类Dev

ASP.Net MVC脚本不适用于控制器的默认操作URL。同样适用于控制器/操作URL

来自分类Dev

ASP.Net MVC脚本不能与控制器的默认操作URL一起使用。同样适用于控制器/操作URL

来自分类Dev

ActionLink没有将参数传递给控制器-asp.Net MVC 4

来自分类Dev

具有可选参数/默认参数值的ASP.NET5 MVC 6路由

来自分类Dev

ASP.NET MVC身份:多个登录路径并修改控制器中的默认登录路径

来自分类Dev

ASP.NET MVC路由-映射操作而不是控制器

来自分类Dev

未在 Asp.Net Core MVC 控制器操作中提取路由 ID

来自分类Dev

在MVC 5中如何在没有默认操作的情况下为控制器设置路由?

来自分类Dev

.net MVC默认路由

来自分类Dev

基于路由数据的具有不同模型类型的Asp.net单控制器操作

来自分类Dev

通过SimpleInjector ASP.NET MVC将接口用作控制器操作参数

来自分类Dev

如何在ASP.NET MVC中使用routeValue参数调用控制器操作

来自分类Dev

根据参数从任何ASP.NET MVC控制器操作返回JSON

来自分类Dev

.NET MVC 5.2从基本控制器继承属性路由

来自分类Dev

如何忽略ASP.NET MVC路由中“控制器/动作”之后的所有字符?

来自分类Dev

没有控制器名称的MVC多个默认路由

来自分类Dev

在ASP.Net Web API中,如何更改特定控制器或操作的默认格式化程序

来自分类Dev

ASP.NET MVC 5 Url是否重写以包含控制器中的所有操作?

Related 相关文章

  1. 1

    路由如何与 asp.net mvc 中的默认控制器和操作一起使用

  2. 2

    如何在控制器ASP.NET MVC 5上禁用默认路由

  3. 3

    我如何配置ASP.NET Core路由以路由到控制器(没有可选动作)(如果存在),然后回退到默认路由?

  4. 4

    ASP.NET MVC仅对一个控制器缺少默认操作

  5. 5

    ASP.NET MVC仅对一个控制器缺少默认操作

  6. 6

    如何在asp.net C#中为某些控制器操作设置默认路由?

  7. 7

    如何在asp.net C#中为某些控制器操作设置默认路由?

  8. 8

    .Net核心MVC控制器,带有可选的参数路由规则,以空值打破

  9. 9

    ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

  10. 10

    没有控制器或动作名称的ASP.NET MVC路由

  11. 11

    ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

  12. 12

    ASP.Net MVC脚本不适用于控制器的默认操作URL。同样适用于控制器/操作URL

  13. 13

    ASP.Net MVC脚本不能与控制器的默认操作URL一起使用。同样适用于控制器/操作URL

  14. 14

    ActionLink没有将参数传递给控制器-asp.Net MVC 4

  15. 15

    具有可选参数/默认参数值的ASP.NET5 MVC 6路由

  16. 16

    ASP.NET MVC身份:多个登录路径并修改控制器中的默认登录路径

  17. 17

    ASP.NET MVC路由-映射操作而不是控制器

  18. 18

    未在 Asp.Net Core MVC 控制器操作中提取路由 ID

  19. 19

    在MVC 5中如何在没有默认操作的情况下为控制器设置路由?

  20. 20

    .net MVC默认路由

  21. 21

    基于路由数据的具有不同模型类型的Asp.net单控制器操作

  22. 22

    通过SimpleInjector ASP.NET MVC将接口用作控制器操作参数

  23. 23

    如何在ASP.NET MVC中使用routeValue参数调用控制器操作

  24. 24

    根据参数从任何ASP.NET MVC控制器操作返回JSON

  25. 25

    .NET MVC 5.2从基本控制器继承属性路由

  26. 26

    如何忽略ASP.NET MVC路由中“控制器/动作”之后的所有字符?

  27. 27

    没有控制器名称的MVC多个默认路由

  28. 28

    在ASP.Net Web API中,如何更改特定控制器或操作的默认格式化程序

  29. 29

    ASP.NET MVC 5 Url是否重写以包含控制器中的所有操作?

热门标签

归档