0
我需要做的是以下子控制器/ partialrequest和形式的操作方法
- 設置小的登錄表單(或任何 局部視圖)
- 完成登錄 行動
- 獲取回到同一 地方(控制器/動作)用戶是 點擊登錄按鈕
任何部分請求/蘇前bcontroller,RenderAction解決方案提供這個功能,不需要額外的代碼來處理父頁面url?
我需要做的是以下子控制器/ partialrequest和形式的操作方法
任何部分請求/蘇前bcontroller,RenderAction解決方案提供這個功能,不需要額外的代碼來處理父頁面url?
你可以嘗試以下方法:
創建一個新用戶的MVC用戶控件(Login.ascx)在其中設置一個登錄表單:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<% using (Html.BeginForm("authenticate", "login")) { %>
<%= Html.Hidden("returnurl", Request.Url.ToString()) %>
<div>
<label for="username">Username</label>
<%= Html.TextBox("username") %>
</div>
<div>
<label for="password">Password</label>
<%= Html.TextBox("password") %>
</div>
<input type="submit" value="Login" />
<% } %>
包含此部分的一些查看頁面:
<% if (!User.Identity.IsAuthenticated) { %>
<% Html.RenderPartial("~/Views/Home/Login.ascx"); %>
<% } else { %>
Welcome <%= Html.Encode(User.Identity.Name) %>
<%} %>
在您的登錄控制器中驗證用戶名和密碼如果認證成功重定向到RETURNURL:
public class LoginController : Controller
{
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Authenticate(string username, string password, string returnurl)
{
// TODO: Perform authentication, set cookies,
// verify that returnurl belongs to your site, etc...
return Redirect(returnurl);
}
}
這是最好的解決辦法?什麼是TempData傳遞? SubControllers是否解決了這個問題? – 2009-11-24 07:31:52