2014-05-16 189 views
0

我想通过执行以下操作将登录页面设置为我的默认页面,但由于某些原因它失败。我的默认页面仍然设置为主页控制器索引()页面。有人能告诉我哪些其他事情可能会影响路由行为吗?ASP MVC路由

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> 

只是一个侧面说明,如果我改变了默认为新{控制器=“首页“,action =”Index“,id = UrlParameter.Optional}所有这三个Html actionlinks都可以工作。但是,如果我将它设置为我想要的方式,即会话控制器Login()视图,则第一个和第三个链接将不起作用。它似乎知道我将Login()视图设置为默认值,这就是为什么当我单击链接时页面不会更改,但Login()页面上的html不会显示。它仍然显示Home Index()视图中的内容。

(顺便说一下,我使用T4MVC,但应该有所作为。)

感谢您的帮助。

回答

1

您需要将登录页面重定向操作设置为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(); 
    } 
+0

是的,这确实解决了这个问题。所以asp mvc框架会自动将默认页面设置为Home Index()?您的解决方案更像是一种“良好做法”或“工作方式”,以防止更改下划线配置的麻烦。谢谢。 – CYC0616

+0

默认由MVC提供.asp mvc框架将默认页面设置为Home Index(),这是维护MVC标准约定的一个好习惯。你可以获得MVC的每一个特性而不会破坏它的模式。所以,尽量保持。谢谢:) –