2010-01-21 72 views
0

我正在尝试执行一个网站,例如http://example.com,该网站将进入位于帐户控制器中的我的登录操作。登录后,我想重定向到http://example.com/id这里id是用户的ID。我可以在ASP.NET MVC路由中做到这一点吗?

我在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

回答

1

检查一下ScottGu对路由的解释。它应该帮助你。检查它here

1

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

在我的情况下,我让他们遵循路线本身相同的模式。所以我会说移动语言=“”是第一个默认值而不是最后一个。

对不起编辑,我的答案的一半由于某种原因被切断。剩下的就是这里。

我实际上在测试应用中尝试过相同的路由,并且遇到了一些问题。如果我只是做MVC创建的默认路由,我可以在最后没有任何操作的情况下指定/ Controller,并且它一切正常。当我用前面的变量(比如你的{language}或者我的{blogSubFolder})做ssame事情时,它实际上不起作用。这正是你所看到的行为。我唯一能从所有这些中找到的是,如果你没有控制器,那么看起来你必须在你的url中指定动作。我试用了包含默认控制器的不同组合,并且不包括它,并尝试了许多不同的路线,但都没有取得任何成功。

相关问题