2009-11-23 78 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

相关问题