我尝试通过执行以下操作将“登录”页面设置为我的默认页面,但由于某些原因,它会失败。我的默认页面仍设置为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,但这应该会有所作为。)
感谢您的帮助。
答案 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();
}