MVC3自定义路由

时间:2013-01-11 13:26:45

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

我用MVC开发了一个网站,我对链接地址在地址栏中的显示方式有一点问题。 当我打开网站时,我必须先登录;登录帐户后,主页出现,但在浏览器地址栏中我仍然有

http://localhost:1413/Account/LogOn

而不是

http://localhost:1413/Home

此外,在我退出后,我被重定向到登录页面,但在地址栏中显示

http://localhost:1413/Account/LogOn 

我想成为

http://localhost:1413/Account/LogOff

我的Global.asx代码

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );           
    }

我使用了这种类型的重定向,但结果是一样的:

public ActionResult LogOn()
    {
        if (HttpContext.User.Identity.IsAuthenticated == true)
        {
            return RedirectToAction("Index", "Home");
        }
        return View();
    }

2 个答案:

答案 0 :(得分:1)

你需要像这样使用重定向动作到主页

RedirectToAction("Action", "Controller")

所以当用户通过身份验证时,您需要将用户重定向到特定的控制器。

用户注销时也是如此

答案 1 :(得分:1)

正如我所看到的,您的问题不是路由导致您的路由正常工作。您的问题是您在控制器帐户中工作。这就是为什么帐户总会出现在您的网址中。如果你想得到这个:

http://localhost:1413/Home

您必须链接到您调用HomeController.cs

的控制器

我希望你理解我试图解释的内容。

也许这可以帮到你更多: http://www.codeproject.com/Articles/190267/Controllers-and-Routers-in-ASP-NET-MVC-3