【问题标题】:Asp.net 4.0 url routing concatinating urlAsp.net 4.0 url 路由连接 url
【发布时间】:2011-12-15 15:08:04
【问题描述】:

我正在使用 .Net 4.0 框架并进行一些 url 路由。这不是 MVC 项目,而是 winform 项目。我在 Global.asax 中创建了两条路线,如下所示:

        routes.MapPageRoute(
           "review",      // Route name
           "documents/{type}",      // Route URL
           "~/default.aspx" // Web page to handle route
        );

        routes.MapPageRoute(
           "help",      // Route name
           "resource/help",      // Route URL
           "~/help.aspx" // Web page to handle route
        );

当我单击站点导航中的链接(例如“文档/待处理”)时,它将转到正确的位置并显示预期的 URL。如果我再次单击“文档/接受”,则 URL 将如下所示:

http://localhost/documents/documents/accepted

此外,该页面未找到并呈现。如果我单击帮助链接然后单击文档,也会发生同样的事情。网址将如下所示:

http://localhost/resource/documents/pending

为什么路由要连接 url?我怎样才能解决这个问题?

提前致谢

【问题讨论】:

    标签: c# asp.net .net asp.net-routing


    【解决方案1】:

    我认为如果它们总是要到达根目录,你需要以不同的方式设置你的路线。像这样的:

         routes.MapPageRoute(
           "review",      // Route name
           "~/documents/{type}",      // Route URL
           "~/default.aspx" // Web page to handle route
        );
    
        routes.MapPageRoute(
           "help",      // Route name
           "~/resource/help",      // Route URL
           "~/help.aspx" // Web page to handle route
        );
    

    原因是您将 document/page.aspx 附加到您所在级别的末尾。所以如果你在http://localhost/this/next/folder/document/accept 并且您路由下一个路由会将路由附加到您的当前目录,因此 http://localhost/this/next/folder/document/document/accept 但如果您像我上面显示的那样路由,它将执行此操作将您带到 http://localhost/document/accept

    【讨论】:

    • 你的正确。我必须做的改变是使用链接网址。以前我链接到“文档/待定”,我将其更改为“/文档/待定”,一切正常。当我尝试将“~/”添加到我的路由 URL 时,它抛出了这个错误:路由 URL 不能以“/”或“~”字符开头,并且不能包含“?”特点。感谢您的帮助
    猜你喜欢
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2011-04-01
    • 2011-09-04
    相关资源
    最近更新 更多