如何声明returnUrl并将值传递给它

时间:2013-08-16 18:10:44

标签: asp.net-mvc asp.net-mvc-4

在下面的代码中,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.");

2 个答案:

答案 0 :(得分:0)

在控制器上添加using System.Web.Mvc

您还应该引用此DLL并将其名称空间添加到web.config

答案 1 :(得分:0)

你不应该在任何地方宣布它。当直接调用方法LogOn时,它是不必要的参数,您不需要它。只需编写("LogOn", "Account")而不returnUrl

从名称returnUrl可以看出,如果autorization成功,用户将被重定向回来。因此,如果未注册的用户试图调用需要注册的方法(访问页面),他将首先被重定向到LogOn页面,并且在成功autorization之后,他将被重定向回他想访问的页面( returnUrl