【问题标题】:asp.net core 2.0 validation flash sessionsasp.net core 2.0 验证 flash 会话
【发布时间】:2018-01-03 15:06:26
【问题描述】:

当验证失败时,我想用验证错误重定向回来(类似 Laravel)。

Laravel 错误重定向示例:

redirect()->back()->withErrors(['email' => 'Email already exists']);

我的控制器:

[HttpPost]
public IActionResult ProcessLogin(LoginRequest loginRequest)
{
    if (! ModelState.IsValid)
    {
        // Redirect back to login view and display error messages.
    }

    // Login handling....
}

asp.net core 2.0 是否原生支持此功能?
我所能找到的只是将错误作为 json 或通过 javascript 验证返回。

【问题讨论】:

    标签: validation asp.net-core


    【解决方案1】:

    最典型和标准的方法是 PRG(Post-Redirect-Get)模式,ASP.NET Core(和一般的 MVC)遵循该模式。使用这种模式,您在成功时重定向。如果存在验证问题,您只需返回视图。换句话说:

    public IActionResult Login()
    {
        return View();
    }
    
    [HttpPost]
    public IActionResult Login(LoginRequest loginRequest)
    {
        if (ModelState.IsValid)
        {
            // do login
            return Redirect("/some/url");
        }
    
        return View(loginRequest);
    }
    

    ModelState 对象(包括验证错误列表)自然可用于视图,而无需以某种方式将错误从一个请求传递到另一个请求。

    【讨论】:

    • 我习惯于使用包含错误的 Flash 会话进行重定向,因此视图将显示在 get 请求中。这样在出错后按 f5 就无关紧要了。但我看到这是 asp.net 核心标准,所以我会使用它。
    猜你喜欢
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多