帳戶頁面打開像正常:RedirectToRoute(「默認」)沒有進行重定向,回到LogOn支持PartialViewResult的HTML相反
public ActionResult Index()
{
return View();
}
這正好呈現以下視圖模板:(因爲此時沒有CurrentUser,「用戶」爲空,所以它運行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>
<% } %>
所以我的用戶名&密碼類型,下面的代碼運行(和用戶添加到會話retreival更高版本)和我重定向到我想要的頁面:
(特別是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");
}
當我再次輸入了用戶名密碼&,即獲得第一個斷點命中是:(試圖加載整個頁面,看來)
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");
}
}
}
,但如果我通過代碼我的默認路由永遠不會被執行。當我一步到下一行,它進入下面的行Html.RenderAction("LogOn", "Account");
再次出現在我的AccountController的索引視圖以及(就在用戶控件)被返回給瀏覽器:
<% 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"];
行應該返回剛纔添加到此會話中的登錄用戶,而不是該斷點的命中,因此它似乎有另一個NOT登錄的用戶。在它不應該在的頁面上執行一條線,
我知道我可能會因爲將用戶添加到Session而被槍殺,但是沒有人知道會發生什麼如果需要更多信息,請詢問&我會更新問題。
感謝
戴夫
您需要查看與Fiddler的瀏覽器連接以查看是否返回重定向。你不能「跨越」重定向。 – 2010-02-26 18:24:41