当前位置:  开发笔记 > 编程语言 > 正文

ViewData [“ ReturnUrl”] = returnUrl在控制器的操作方法中有什么用

如何解决《ViewData[“ReturnUrl”]=returnUrl在控制器的操作方法中有什么用》经验,为你挑选了1个好方法。

当我使用Individual User Accounts身份验证创建ASP.NET Core Web项目时,我注意到VS2015创建了AccountController具有许多操作方法的。这些动作方法大多数都包含输入可选参数string returnUrl = null,在这些方法ViewData["ReturnUrl"] = returnUrl;中,如下面的一个示例所示。

问题

    ViewData["ReturnUrl"] = returnUrl;在这些操作方法中,此可选输入参数和语句的用途是什么?2.什么时候应该在动作方法中使用它们,什么时候应该避免使用它们?

获取方法

[HttpGet]
[AllowAnonymous]
public IActionResult Login(string returnUrl = null)
{
    ViewData["ReturnUrl"] = returnUrl;
    return View();
}

发布方式

[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task Login(LoginViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false);
                if (result.Succeeded)
                {
                    _logger.LogInformation(1, "User logged in.");
                    return RedirectToLocal(returnUrl);
                }
                if (result.RequiresTwoFactor)
                {
                    return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                }
                if (result.IsLockedOut)
                {
                    _logger.LogWarning(2, "User account locked out.");
                    return View("Lockout");
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return View(model);
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }

Noppey.. 6

当您想让用户返回到他最初想要访问的页面之前,需要在提示登录之前将返回URL传递给视图。

您可以使用ViewData或作为模型的常规属性来执行此操作。

因此,您传递回程URL只是因为您不想“忘记”用户来自何处。



1> Noppey..:

当您想让用户返回到他最初想要访问的页面之前,需要在提示登录之前将返回URL传递给视图。

您可以使用ViewData或作为模型的常规属性来执行此操作。

因此,您传递回程URL只是因为您不想“忘记”用户来自何处。

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有