ASP MVC路由

时间:2014-05-16 16:05:04

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

我尝试通过执行以下操作将“登录”页面设置为我的默认页面,但由于某些原因,它会失败。我的默认页面仍设置为Home controller Index()页面。有人能告诉我其他可能影响路由行为的事情吗?

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Session", action = "Login", id = UrlParameter.Optional }
            );


        }
    }

这是我的会话控制器:

public partial class SessionController : Controller
    {
        //
        // GET: /Session/
        public virtual ActionResult Login()
        {
            return View();
        }

        public virtual ActionResult Test()
        {
            return View();
        }

    }

这是我的_layout.cshtml

<body>
    <header>
        <div class="content-wrapper">
            <div class="float-left">
                <p class="site-title">@Html.ActionLink("Net-Inspect Aero Dropbox", "Index", "Home")</p>
            </div>
            <div class="float-right">
                <nav>
                    <ul id="menu">
                        <li>@Html.ActionLink("Login", MVC.Session.Login())</li>
                        <li>@Html.ActionLink("Test", MVC.Session.Test())</li>
                        <li>@Html.ActionLink("Test2", "Login", "Session")</li>
                    </ul>
                </nav>
            </div>
        </div>
    </header>
    <div id="body">
        <section class="content-wrapper main-content clear-fix">
            @RenderBody()
        </section>
    </div>
    <footer>
        <div class="content-wrapper">
        </div>
    </footer>
</body>

只是旁注,如果我将默认值更改为新{controller =&#34; Home&#34;,action =&#34; Index&#34;,id = UrlParameter.Optional}这三个Html动作链接将会工作。但是,如果我按照我想要的方式设置它,即会话控制器Login()视图,第一个和第三个链接将不起作用。它似乎知道我将Login()视图设置为默认值,这样当我点击链接时页面没有改变的原因,但登录()页面上的html不会显示。它仍然显示Home Index()视图中的内容。

(顺便说一句,我使用的是T4MVC,但这应该会有所作为。)

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要将Home页面重定向操作设置为Home Controller上的索引方法。无需更改Global.asax上的默认路由。类似的东西:

    public ActionResult Index()
    {

        ViewBag.Message = "Welcome to ASP.NET MVC!";
        if (!User.Identity.IsAuthenticated)
        {
            return RedirectToAction("LogOn", "Users");
        }
        else
        {

        }
        return View();
    }