您可以使用請求查詢字符串一直通過SignOn進程返回URL。
首先,指定頁面返回時,你使您的點登錄偏:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="Microsoft.Web.Mvc"%>
<!-- Your Example/Page1 page -->
<% if (!User.IsAuthenticated) %>
<%= Html.RenderAction("SignOn", "Account", new { returnUrl = Request.Url.PathAndQuery }); %>
使用如的RenderAction當前上下文是不是賬戶控制器。該功能目前不在MVC版本中,因此您需要在解決方案中包含ASP.NET MVC's Future library。
接下來,點登錄控制器:
public ActionResult SignOn(string returnUrl)
{
if (User.Identity.IsAuthenticated)
{
User user = userRepository.GetItem(u => u.aspnet_UserName == User.Identity.Name);
return !string.IsNullOrEmpty(returnUrl)
? Redirect(returnUrl)
: (ActionResult) RedirectToAction("Index", "Home");
}
return PartialView();
}
點登錄形式:
<% using (Html.BeginForm("SignOn", "Account", new { returnUrl = Request.QueryString["returnUrl"] },FormMethod.Post,new {@class="my_signOn_class"}))
{ %>
<!-- Form -->
<% } %>
最後,在你點登錄控制器處理表單POST,您可以將用戶返回到 'RETURNURL' 使用以下代碼:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SignOn(FormCollection formCollection, string returnUrl)
{
if (BusinessRuleViolated(formCollection))
{
if(!string.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}
// SignIn(...)
}