帐户页面正常打开:
public ActionResult Index()
{
return View();
}
这将呈现以下View模板:(因为此时没有CurrentUser,'user'为null,因此它运行Html.RenderAction("LogOn", "Account");
)
<% var user = (WAPConfigUser) HttpContext.Current.Session["CurrentUser"];
if (user == null || user.IsLoggedIn == false || user.IsPublic)
{
Html.RenderAction("LogOn", "Account");
} else { %>
<span class="PageNavLink">
<% Html.RenderPartial("AccountMenu"); %>
</span>
<div id="IndexContent" class="IndexContent">
<% Html.RenderAction("UserList", "Account"); %>
</div>
<% } %>
所以我输入用户名&amp;密码,并运行以下代码(并将用户添加到会话以便稍后进行审阅),然后我被重定向到我想要的页面:
(特别是return Redirect(redirect);
)
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOn(WAPConfigUser user)
{
if (!ValidateLogOn(user.UserName, user.Password))
{
return PartialView();
}
else
{
string redirect = "";
if (Request.QueryString["ReturnUrl"] != null)
{
redirect = Request.QueryString["ReturnUrl"].ToString();
return Redirect(redirect);
}
else
{
return RedirectToRoute("Default");
}
}
}
然后我退出,我被重定向到登录屏幕:
public RedirectToRouteResult LogOut()
{
Session.Remove("CurrentUser");
return RedirectToAction("Index", "Account");
}
当我输入我的用户名&amp;密码再次被击中的第一个断点是:(试图加载整个页面,似乎)
public ActionResult Index()
{
return View();
}
下一个被击中的断点是return RedirectToRoute("Default");
行:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOn(WAPConfigUser user)
{
if (!ValidateLogOn(user.UserName, user.Password))
{
return PartialView();
}
else
{
string redirect = "";
if (Request.QueryString["ReturnUrl"] != null)
{
redirect = Request.QueryString["ReturnUrl"].ToString();
return Redirect(redirect);
}
else
{
return RedirectToRoute("Default");
}
}
}
但如果我单步执行代码,我的默认路由永远不会被执行。当我走到下一行时,它会在我的AccountController的索引视图中再次转到以下行Html.RenderAction("LogOn", "Account");
,并且(只是用户控件)返回到浏览器:
<% var user = (WAPConfigUser) HttpContext.Current.Session["CurrentUser"];
if (user == null || user.IsLoggedIn == false || user.IsPublic)
{
Html.RenderAction("LogOn", "Account");
} else { %>
<span class="PageNavLink">
<% Html.RenderPartial("AccountMenu"); %>
</span>
<div id="IndexContent" class="IndexContent">
<% Html.RenderAction("UserList", "Account"); %>
</div>
<% } %>
这里有一些我不明白的事情。
RedirectToRoute("Default")
没有将我重定向到默认路由?var user = (WAPConfigUser) HttpContext.Current.Session["CurrentUser"];
应该返回我刚刚添加到此前会话的登录用户。相反,该行不会受到断点的影响,因此它似乎有另一个未记录的 - 在用户。它正在执行一条不应该的行,在它不应该的页面上!我知道我可能会因为将用户添加到会话而被拍摄,但是有人知道发生了什么吗?如果需要更多信息,请询问&amp;我会更新问题。
由于
戴夫
答案 0 :(得分:0)
问题是:
首先是去索引&amp;返回一个View();
public ActionResult Index()
{
return View();
}
该视图包含调用
的指令Html.RenderAction("LogOn", "Account");
......还有其他一些事情发生了,我不确定。
最终工作的是用jQuery控制POST并直接调用LogOn Action Method。这绕过了对Index()的需求。我进行了验证,根据结果,我将用户重定向到所需的页面。