0

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

2 回答 2

0

你不应该在任何地方声明它。它是不必要的参数,直接调用方法时不需要它LogOn。不写("LogOn", "Account")就行returnUrl

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

于 2013-08-16T18:58:03.763 回答
0

添加using System.Web.Mvc在您的控制器顶部。

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

于 2013-08-16T18:27:01.937 回答