【发布时间】:2019-07-07 20:01:09
【问题描述】:
returnUrl 字符串返回为空值的原因可能是什么,尽管它已打印在地址栏中。在他的表单中,我创建了隐藏的输入标签,以便捕获 URL 并将其传递给 ActionResult 参数:
@using (Html.BeginForm("Login", "Account", FormMethod.Post, ))
{
@Html.AntiForgeryToken()
<input type="hidden" value="@Url.RequestContext.HttpContext.Request.QueryString["ReturnUrl"]"/>
<input type="submit" value="Enter" class="btn btn-primary"/>
}
所以在点击提交按钮后,我被重定向到 Account controller/Login ActionResult,ReturnUrl 参数为空
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model,string ReturnUrl)
{
if (ModelState.IsValid)
{
//some codes
if (String.IsNullOrWhiteSpace(ReturnUrl))
{
return RedirectToAction("HomeIndex", "Home");
}
else
{
return Redirect(ReturnUrl);
}
}
else
{
ModelState.AddModelError("UserLoginError", "Username or password is incorrect");
}
}
return View(model);
}
我还尝试将查询字符串作为参数添加到 Beginform 的括号内,如下所示:
@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { ReturnUrl = Request.QueryString["ReturnUrl"] } ))
也没有用。
【问题讨论】:
-
Url.RequestContext.HttpContext.Request.QueryString["ReturnUrl"]和Request.QueryString["ReturnUrl"]中返回了什么样的URL?如果两者都是 null 或空字符串,请尝试HttpContext.Request.UrlReferrer.Query。
标签: asp.net asp.net-mvc