获取错误值不能为空或空.参数名称:URL

本文关键字:URL 参数 不能 获取 取错误 | 更新日期: 2023-09-27 18:10:52

这是我的代码。请有人帮助我迫切需要上面提到的代码。

    [HttpGet]
    public ActionResult Index(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View();
    }
    [HttpPost]
    public ActionResult Index(LoginModel loginModel, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (loginModel.Username == "user" && loginModel.Password == "password")
            {
                FormsAuthentication.SetAuthCookie(loginModel.Username, true);
                return Redirect(returnUrl);
            }
            else
            {
                ModelState.AddModelError("", "The username or password provided is incorrect.");
            }
        }
        ViewBag.ReturnUrl = returnUrl;
        return View(loginModel);
    }

我正在关注这个链接:http://www.primaryobjects.com/CMS/Article155.aspx

获取错误值不能为空或空.参数名称:URL

在哪里问题:

如果没有returnUrl参数,并且将null传递给Redirect()方法,会发生什么?-你会得到这个错误:).

解决方案:

你可以检查url是否为空或使用redirecttollocal方法,微软已经包含在默认的mvc模板(或编写自己的或..etc只是不要传递null给Redirect方法):

...
FormsAuthentication.SetAuthCookie(loginModel.Username, true);
// Here 'return Redirect(returnUrl);' become:
return RedirectToLocal(returnUrl);
... 
private ActionResult RedirectToLocal(string returnUrl)
{
    if (Url.IsLocalUrl(returnUrl))
    {
        return Redirect(returnUrl);
    }
    return RedirectToAction("Index", "Home");
}