当用户尝试访问经过身份验证的页面时,会将其重定向到LogOn页面。以下是LogOn操作:
控制器操作
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
//Authentication codes goes here .......
}
登录视图:
@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { @class = "jmenu" }))
{
// Form for login codes goes here......
}
问题: 在LogOn View中,当我没有在Html.BeginForm()中放置参数时,它可以正常工作。登录后,页面将重定向到页面,用户将重定向到登录进行身份验证。但如果我按上述方式传递参数,登录后会重定向到主页。这里,可能是由于returnUrl未传递给LogOn操作。如何在Html.BeginForm中传递returnUrl参数以进行LogOn操作。或者,是否可以在不更改视图和修改LogOn操作的情况下进行操作,这样我就不必更改其他视图的代码。谢谢你的时间......
答案 0 :(得分:0)
您可以在操作中使用Request.UrlReferrer
来获取最后一个请求的网址。
答案 1 :(得分:0)
您需要将返回网址定义为表单的一部分。需要注意的一点是,您不能总是依赖网址引荐来源。在某些情况下,它可能为空。
@{
string url = "";
if (ViewContext.HttpContext.Request.UrlReferrer != null)
{
url = ViewContext.HttpContext.Request.UrlReferrer.PathAndQuery;
}
}
@using (Html.BeginForm("Logon", "Account", new { model = this.Model, returnUrl = url }))
{
}