【问题标题】:Can I do this in ASP.NET MVC routing?我可以在 ASP.NET MVC 路由中执行此操作吗?
【发布时间】:2010-02-09 09:46:44
【问题描述】:

我正在尝试创建一个类似http://example.com 的网站,该网站转到位于帐户控制器的我的登录操作。登录后,我想重定向到 http://example.com/id 之类的东西,其中 id 是用户的 ID。

我的 Global.asax.cs 中已有此代码。

 routes.MapRoute("Login2",
           "{bg}/{controller}/{action}",
          new { controller = "Account", action = "SignIn", bg = "" }
          );
 routes.MapRoute("Login",
            "{controller}/{action}",
           new { controller = "Account", action = "SignIn" }
           );
routes.MapRoute("Default",
           "{bg}/{controller}/{action}",
           new { controller = "Home", action = "Index", bg = "" }
           ); 

当我转到http://example.com/id并且用户尚未通过身份验证时,会显示登录表单并转到我希望它在登录后重定向的页面。如果只是转到http://example.com ,我正在做一些服务器端验证以了解用户的 id,它也可以完成它的工作。

当我在http://example.com/id 并想注册时,有一个指向http://example.com/id/account/signup 的链接。它实际上进入了注册页面。但是当我转到http://example.com 并尝试悬停注册链接时,链接变为http://account/signup 而不是http://example.com/account/signup

【问题讨论】:

    标签: asp.net asp.net-mvc url-routing


    【解决方案1】:

    查看 ScottGu 对路由的解释。它应该可以帮助你。检查它here

    【讨论】:

      【解决方案2】:

      是的,你绝对可以,我在我创建的博客网站上做同样的事情,我有类似的路线 {blogSubFolder}/{controller}/{action}。我要发表的唯一评论是我不确定默认值的顺序是否重要。

      就我而言,我让它们遵循与路线本身相同的模式。所以我想说将 language = "" 移动到第一个默认值而不是最后一个。

      抱歉编辑,我的一半答案因某种原因被截断。这是剩下的。

      我实际上在测试应用程序中尝试了相同的路线,但遇到了一些问题。如果我只是执行 MVC 创建的默认路由,我可以在最后指定 /Controller 而无需任何操作,并且一切正常。当我对前面的变量(例如你的 {language} 或我的 {blogSubFolder})做同样的事情时,它实际上不起作用。这正是您所看到的行为。我唯一能从这一切中弄清楚的是,如果你没有首先拥有控制器,那么看起来你必须在你的 url 中指定操作。我尝试了包含默认控制器和不包含它的不同组合,还尝试了许多不同的路由,但都没有成功。

      【讨论】:

        猜你喜欢
        • 2018-07-24
        • 2010-10-29
        • 1970-01-01
        • 2013-08-31
        • 2017-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多