小编Dav*_*ler的帖子

ASP.Net Core MVC RedirectToAction在returnUrl前面附加控制器名称

我正在开发一个ASP.Net核心,MVC 6应用程序.我有一个AppControler作为我的初始控制器,如果用户试图转到具有[Authorize]属性的动作,我会重定向到我的AuthController进行登录,传入returnUrl返回.经过身份验证后,我使用...返回RedirectToAction(returnUrl).

在debug中,我可以看到returnUrl字符串设置为/ App/Timesheets.但是,在浏览器地址栏中,它的地址为http:// localhost:49940/Auth /%2FApp%2FTimeSheets.由于某种原因,它将控制器名称(Auth)附加在returnUrl之前.

这是我在AuthController中的Login操作

    [HttpPost]
    public async Task<ActionResult> Login(LoginViewModel vm, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            var signInResult = await _signInManager.PasswordSignInAsync(vm.Username, vm.Password, true, false);

            if (signInResult.Succeeded)
            {
                if (string.IsNullOrWhiteSpace(returnUrl))
                {
                    return RedirectToAction("Timesheets", "App");
                }
                else
                {
                    return RedirectToAction(returnUrl);
                }
            }
            else
            {
                ModelState.AddModelError("", "Username or password incorrect");
            }
        }

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

我可以在浏览器地址栏中手动输入http:// localhost:49940/App/Timesheets并进入正确的视图.另外,如果我添加

returnUrl = String.Empty;  //Test Only
Run Code Online (Sandbox Code Playgroud)

在线之前......

if (string.IsNullOrWhiteSpace(returnUrl))
Run Code Online (Sandbox Code Playgroud)

使它执行线...

return RedirectToAction("Timesheets", "App");
Run Code Online (Sandbox Code Playgroud)

重定向工作得很好.所以它与"/Controller/Action"以问题格式传递字符串变量有关.

有任何想法吗?

c# asp.net-core-mvc asp.net-core

1
推荐指数
1
解决办法
1万
查看次数

如何创建一个使用延迟执行返回列表中单词的不同 3 个字母前缀的 linq 查询

我有一个包含 50 多个可变长度单词的列表。我需要从每个至少 3 个字符长的单词中获取前 3 个字符的 IEnumerable 列表,并使用延迟执行仅返回不同的字符。如何在 c# 6 中使用 linq 来做到这一点?

c# linq

1
推荐指数
1
解决办法
3692
查看次数

标签 统计

c# ×2

asp.net-core ×1

asp.net-core-mvc ×1

linq ×1