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