urlHelper构建错误的路径。

L·Kh

我有一条路线规则:

routes.MapRoute("HotToursPage",
            "HotTours/{countryTo}/{resort}/{param1}/{param2}/{param3}/{param4}/{param5}",
            new
            {
                controller = "HotTours",
                action = "Index",
                countryTo = UrlParameter.Optional,
                resort = UrlParameter.Optional,
                param1 = UrlParameter.Optional,
                param2 = UrlParameter.Optional,
                param3 = UrlParameter.Optional,
                param4 = UrlParameter.Optional,
                param5 = UrlParameter.Optional
            }
        );

在代码中,我有:

var dictionary = new RouteValueDictionary();
        aaa.Add("countryTo", countryToInfo.Translit);
        aaa.Add("resort", resort);
        aaa.Add("param1", param1);
string url = urlHelper.Action("Index", "HotTours", dictionary);

如果存在param5,param6等,则

url = / hottours /?countryTo = tailand&resort = bangkok&param1 = price_from_50000,

但如果我删除param5,param6等,则一切正常:

网址= / hottours / tailand /曼谷/ price_from_50000

为什么如果段数小于7,那么一切正常吗?我需要9个细分,但在这种情况下urlHelper会生成错误的url。

夜猫子888

构建URL时,必须提供URL模式中的所有路由值。有一个例外-当最后一个参数为可选参数时,您无需将其包括在内。

因此,要始终如一地处理在长URL模式中可能是可选的段,您需要多个路由。每条路线只能有一条UrlParameter.Optional,并且必须是最右边的路段。

routes.MapRoute("HotToursPage3",
    "HotTours/{countryTo}/{resort}/{param1}/{param2}/{param3}/{param4}/{param5}",
    new
    {
        controller = "HotTours",
        action = "Index",
        param5 = UrlParameter.Optional
    }
);

routes.MapRoute("HotToursPage2",
    "HotTours/{countryTo}/{resort}/{param1}/{param2}/{param3}",
    new
    {
        controller = "HotTours",
        action = "Index",
        param3 = UrlParameter.Optional
    }
);

routes.MapRoute("HotToursPage1",
    "HotTours/{countryTo}/{resort}/{param1}",
    new
    {
        controller = "HotTours",
        action = "Index",
        param1 = UrlParameter.Optional
    }
);

注意:我在这里假设您的{countryTo}{resort}参数是必需的使它们成为可选选项似乎并不明智。但是,如果我弄错了,您需要另一条路线来处理这两个可选的段,或者您应该为它们提供合理的默认值。一般而言,如果没有合理的默认值,则应在URL中进行要求。

请注意,如果没有提供右侧的任何细分,您仍然只能使该细分为可选因此,此组合将起作用:

var dictionary = new RouteValueDictionary();
dictionary.Add("countryTo", "test1");
dictionary.Add("resort", "test2");
dictionary.Add("param1", "test3");
var url = Url.Action("Index", "HotTours", dictionary);

但是这种组合仍然会建立一个查询字符串:

var dictionary = new RouteValueDictionary();
dictionary.Add("countryTo", "test1");
dictionary.Add("resort", "test2");
dictionary.Add("param1", "test3");
dictionary.Add("param2", "test4");
dictionary.Add("param5", "test5");
var url = Url.Action("Index", "HotTours", dictionary);

如果希望所有5个参数都是可选的(并以任意顺序排列),则应使用查询字符串,而不是将其放入路径中。

routes.MapRoute("HotToursPage",
    "HotTours/{countryTo}/{resort}",
    new
    {
        controller = "HotTours",
        action = "Index"
    }
);

一种替代方法(我不建议这样做)是建立一系列具有标识符段的路由,使您可以按任何顺序放置这些值。请参见带有Route的ASP.Net MVC处理段

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Maven构建路径错误

来自分类Dev

Jenkins 因“PKIX 路径构建”错误而失败

来自分类Dev

在解决构建路径错误之前无法构建项目

来自分类Dev

解决了构建路径错误(仍然)之前,无法构建项目

来自分类Dev

PKIX路径构建失败错误在Oracle JDK上仍然存在

来自分类Dev

修复日食中的多个构建路径错误

来自分类Dev

ngx-translate:语言构建路径错误

来自分类Dev

TFS 构建版本 IIS 部署虚拟路径应以 / 错误开头

来自分类Dev

Spring Boot在解决构建路径错误之前无法构建项目

来自分类Dev

Bitbucket Project中的“直到解决构建路径错误,才能构建项目”

来自分类Dev

外部VS2013构建错误“错误MSB4019:找不到导入的项目<路径>”

来自分类Dev

为UrlHelper创建扩展方法时出现错误

来自分类Dev

为UrlHelper创建扩展方法时出现错误

来自分类Dev

Java“ sun.security.validator.ValidatorException:PKIX路径构建失败”证书验证错误

来自分类Dev

NetBeans无法构建任何类型的Cordova项目。路径已存在错误

来自分类Dev

找不到Android Studio构建错误debug-unaligned.apk路径

来自分类Dev

错误:无法准备上下文:在构建和标记Docker映像时找不到路径“”

来自分类Dev

在构建项目时,由于相对路径,webpack会给出错误

来自分类Dev

Javax.Faces库:构建路径不完整错误

来自分类Dev

为什么在处理贝宝付款时突然出现“ PKIX路径构建失败”错误

来自分类Dev

修复可搜索配置xml文件中的构建路径错误

来自分类Dev

cocos2dx 3.6中的Java构建路径错误

来自分类Dev

同步Git仓库时出现构建错误:路径中包含非法字符

来自分类Dev

Android Studio 2.1.1中的Gradle构建失败:“ app:compileDebugJavaWithJavac”(错误的路径)

来自分类Dev

将代码从Github导入到Eclipse。获取构建路径错误

来自分类Dev

在TFS2015 vNext Build上发生构建错误时显示项目完整路径

来自分类Dev

Angular AOT 构建错误 - 超出最大调用堆栈大小,解析路径中的符号 XXX

来自分类Dev

无法看到提供提示或重定向到错误路径的失败构建的 java 编译器行

来自分类Dev

如何为失败的构建中出现的错误指定迭代路径?

Related 相关文章

  1. 1

    Maven构建路径错误

  2. 2

    Jenkins 因“PKIX 路径构建”错误而失败

  3. 3

    在解决构建路径错误之前无法构建项目

  4. 4

    解决了构建路径错误(仍然)之前,无法构建项目

  5. 5

    PKIX路径构建失败错误在Oracle JDK上仍然存在

  6. 6

    修复日食中的多个构建路径错误

  7. 7

    ngx-translate:语言构建路径错误

  8. 8

    TFS 构建版本 IIS 部署虚拟路径应以 / 错误开头

  9. 9

    Spring Boot在解决构建路径错误之前无法构建项目

  10. 10

    Bitbucket Project中的“直到解决构建路径错误,才能构建项目”

  11. 11

    外部VS2013构建错误“错误MSB4019:找不到导入的项目<路径>”

  12. 12

    为UrlHelper创建扩展方法时出现错误

  13. 13

    为UrlHelper创建扩展方法时出现错误

  14. 14

    Java“ sun.security.validator.ValidatorException:PKIX路径构建失败”证书验证错误

  15. 15

    NetBeans无法构建任何类型的Cordova项目。路径已存在错误

  16. 16

    找不到Android Studio构建错误debug-unaligned.apk路径

  17. 17

    错误:无法准备上下文:在构建和标记Docker映像时找不到路径“”

  18. 18

    在构建项目时,由于相对路径,webpack会给出错误

  19. 19

    Javax.Faces库:构建路径不完整错误

  20. 20

    为什么在处理贝宝付款时突然出现“ PKIX路径构建失败”错误

  21. 21

    修复可搜索配置xml文件中的构建路径错误

  22. 22

    cocos2dx 3.6中的Java构建路径错误

  23. 23

    同步Git仓库时出现构建错误:路径中包含非法字符

  24. 24

    Android Studio 2.1.1中的Gradle构建失败:“ app:compileDebugJavaWithJavac”(错误的路径)

  25. 25

    将代码从Github导入到Eclipse。获取构建路径错误

  26. 26

    在TFS2015 vNext Build上发生构建错误时显示项目完整路径

  27. 27

    Angular AOT 构建错误 - 超出最大调用堆栈大小,解析路径中的符号 XXX

  28. 28

    无法看到提供提示或重定向到错误路径的失败构建的 java 编译器行

  29. 29

    如何为失败的构建中出现的错误指定迭代路径?

热门标签

归档