在ASP.NET MVC 3项目中使用区域时,我偶然发现了ActionLink和RedirectToAction方法的这个问题。ASP.NET MVC区域 - ActionLink和RedirectToAction
我加在的AccountController下面的代码是在根级...
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
if (Roles.Provider.IsUserInRole(model.UserName, "Admin"))
{
return RedirectToAction("Index", "Admin", new { area = "Admin" });
}
else
{
return RedirectToAction("Index", "Home");
}
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
基于其当前登录用户的角色属于我重定向到适当的区域。它到目前为止正确工作。
管理方面看起来如下...
在这方面,我已经从根本上复制的_ViewStart.cshtml。
为注销的联系,关于,首页等不工作作为它们指向不存在的路径。
我不想在区域文件夹中创建另一个帐户,或家庭控制器。我想使用根中的那个。
继收到的意见,就改变_LogOnPartial.cshtml代码所示...
@if(Request.IsAuthenticated) {
<text>Welcome <strong>@User.Identity.Name</strong>!
[ @Html.ActionLink("Log Off", "LogOff", "Account", new { area = "" }) ]</text>
}
else {
@:[ @Html.ActionLink("Log On", "LogOn", "Account", new { area = "" }) ]
}
产生以下网址...
这仍然是不对。
'新{面积= “”}'应该给你的根。 – gdoron 2013-04-21 01:52:26