2009-11-23 20 views
0

我需要做的是以下子控制器/ partialrequest和形式的操作方法

  1. 設置小的登錄表單(或任何 局部視圖)
  2. 完成登錄 行動
  3. 獲取回到同一 地方(控制器/動作)用戶是 點擊登錄按鈕

任何部分請求/蘇前bcontroller,RenderAction解決方案提供這個功能,不需要額外的代碼來處理父頁面url?

回答

0

你可以嘗試以下方法:

  1. 創建一個新用戶的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" /> 
    <% } %> 
    
  2. 包含此部分的一些查看頁面:

    <% if (!User.Identity.IsAuthenticated) { %> 
        <% Html.RenderPartial("~/Views/Home/Login.ascx"); %> 
    <% } else { %> 
        Welcome <%= Html.Encode(User.Identity.Name) %> 
    <%} %> 
    
  3. 在您的登錄控制器中驗證用戶名和密碼如果認證成功重定向到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); 
        } 
    } 
    
+0

這是最好的解決辦法?什麼是TempData傳遞? SubControllers是否解決了這個問題? – 2009-11-24 07:31:52

相關問題