在下面的代码中,returnUrl被传递给LogOn Action。 哪里我应该声明它,然后将其传递给LogOn Action?什么是它的价值?
[HttpGet]
public ActionResult LogOn(string returnUrl)
{
if (User.Identity.IsAuthenticated) //remember me
{
if (shouldRedirect(returnUrl))
{
return Redirect(returnUrl);
}
return Redirect(FormsAuthentication.DefaultUrl);
}
return View(); // show the login page
并且在第10行中的“Url”未定义。
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
MigrateShoppingCart(model.UserName);
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (**Url**.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
答案 0 :(得分:0)
在控制器上添加using System.Web.Mvc
。
您还应该引用此DLL并将其名称空间添加到web.config
答案 1 :(得分:0)
你不应该在任何地方宣布它。当直接调用方法LogOn
时,它是不必要的参数,您不需要它。只需编写("LogOn", "Account")
而不returnUrl
。
从名称returnUrl
可以看出,如果autorization
成功,用户将被重定向回来。因此,如果未注册的用户试图调用需要注册的方法(访问页面),他将首先被重定向到LogOn
页面,并且在成功autorization
之后,他将被重定向回他想访问的页面( returnUrl
)