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,但应该有所作为。)
感谢您的帮助。
是的,这确实解决了这个问题。所以asp mvc框架会自动将默认页面设置为Home Index()?您的解决方案更像是一种“良好做法”或“工作方式”,以防止更改下划线配置的麻烦。谢谢。 – CYC0616
默认由MVC提供.asp mvc框架将默认页面设置为Home Index(),这是维护MVC标准约定的一个好习惯。你可以获得MVC的每一个特性而不会破坏它的模式。所以,尽量保持。谢谢:) –