我有一个使用get方法登录的操作方法:
public virtual ActionResult LogIn()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
以及使用Ajax.BeginForm()在Ajax调用中发布的Post方法的动作方法,如:
[HttpPost]
[AjaxOnly]
[ValidateAntiForgeryToken]
public virtual ActionResult LogIn(LogInViewModel loginInfo, string returnUrl)
{
...
}
Run Code Online (Sandbox Code Playgroud)
但returnUrl总是为空!
我使用MVC 4.
这个问题的原因是什么?
您必须将returnUrl发送回服务器.例如,您的登录表单应将returnUrl作为参数:
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
....
<input type="submit" value="Log in" />
}
Run Code Online (Sandbox Code Playgroud)
以前在登录操作中保存在服务器端的,由于在查询字符串中传递了ReturnUrl而使用AuthorizeAttribute而调用:
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7892 次 |
| 最近记录: |