我需要做的是以下
任何部分请求/子控制器,RenderAction解决方案都提供此功能,而无需任何额外代码来处理父页面URL?
答案 0 :(得分:0)
您可以尝试以下方法:
创建一个新用户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);
}
}