如果 ModelState.IsValid 失败,收到错误消息吗?

2023-11-30

我的控制器中有这个功能。

[HttpPost]
public ActionResult Edit(EmployeesViewModel viewModel)
{
    Employee employee = GetEmployee(viewModel.EmployeeId);
    TryUpdateModel(employee);

    if (ModelState.IsValid)
    {
        SaveEmployee(employee);
        TempData["message"] = "Employee has been saved.";
        return RedirectToAction("Details", new { id = employee.EmployeeID });
    }

    return View(viewModel); // validation error, so redisplay same view
}

一直失败,ModelState.IsValid不断返回 false 并重新显示视图。但我不知道错误是什么。

有没有办法获取错误并将其重新显示给用户?


Try this

if (ModelState.IsValid)
{
    //go on as normal
}
else
{
    var errors = ModelState.Select(x => x.Value.Errors)
                           .Where(y=>y.Count>0)
                           .ToList();
}

errors将是所有错误的列表。

如果你想向用户显示错误,你所要做的就是将模型返回到视图,如果你还没有删除 Razor@Html.ValidationFor()表达式,它就会显示出来。

if (ModelState.IsValid)
{
    //go on as normal
}
else
{
    return View(model);
}

该视图将在每个字段旁边和/或 ValidationSummary(如果存在)中显示任何验证错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果 ModelState.IsValid 失败,收到错误消息吗? 的相关文章

随机推荐

  • 在 ARCore unity 中禁用/切换跟踪平面的可视化

    我已经研究 ARCore Unity 的代码有一段时间了 我想做一个简单的任务 即有一个切换按钮 以便用户可以在场景中放置一个对象 同时知道在跟踪平面可见时将其放置在哪里一旦用户放置了对象 他就可以选择仅在视觉上禁用跟踪的平面 使其看起来更
  • 在 C 的哪些版本中,括号内的块用于返回有效值?

    If I do int j int x 7 x 3 在 i686 apple darwin10 gcc 4 2 1 GCC 4 2 1 Apple Inc build 5646 gcc 中 它编译得很好 有问题的块 int x 7 x 3
  • 悬空指针,free()后值改变的原因?

    在下面的代码段中 之后free x 为什么y变成0 根据我的理解 所指向的堆中的内存x 并且仍然被指出y 还没有分配给别人 怎么会变成0呢 而且 我不认为这是free x 这将其更改为 0 任何意见 include
  • Gradle 复制任务第一次不从临时文件夹复制文件

    我有一个运行这样的任务的构建文件 Task 1 unpackWar 将war文件解压到Temp文件夹 Task 2 copyWarFilesToWebContent 将文件复制到 WebContent 文件夹 并排除一些内容 Task 3
  • Android EditText 提示大小

    如何减少EditText提示尺寸 您可以通过在字符串资源中设置大小来完成此操作 例如
  • WIX 启用 Windows 功能

    在安装软件之前 我必须检查某些 Windows 功能是否已启用 我可以使用 dism 命令行工具检查或安装它 我创建了一个自定义操作来执行此操作 但是有没有办法以 WIX 本机方式 执行此操作
  • Python正则表达式搜索句子中的单词

    我仍在学习 Python 和正则表达式的诀窍 我需要一些帮助 我需要一个可以在句子中搜索特定单词的正则表达式 我已经成功创建了一个模式来搜索单个单词 但是如何检索我需要查找的其他单词 重新模式会是什么样子来做到这一点 gt gt gt qu
  • 带有 FlowLayout 小部件的 QScrollArea 无法正确调整大小

    我想创建一个类似于 KDE 或 Gnome 或 MacOS 系统设置的小部件 例如 像这张图片 我已经实现了 FlowLayoutQt 文档示例 如果我将一些 FlowLayout 小部件 用 QVBoxLayout 包装在容器小部件中 放
  • Javascript字符串替换不起作用[重复]

    这个问题在这里已经有答案了 所以我有一个字符串 房间描述 并且想替换部分
  • 如何尝试解析枚举值?

    我想编写一个函数 它可以根据给定值 作为字符串传递 验证可能的值enum 如果匹配 它应该返回枚举实例 否则 它应该返回默认值 该函数不能在内部使用try catch 这排除了使用Enum Parse 当给出无效参数时会引发异常 我想使用类
  • jquery click() 事件不适用于附加的 html 标签

    在我的问题有意义之前 我需要解释一些事情 在我的第一页上 我有一个主 div 我在其中使用 jquery load 方法从另一个页面加载标记 我正在加载的 html 链接到我的脚本所在的 js 页面 js 页面是我操作主 div 内容的地方
  • 通过 NSStream 在 iOS 设备之间发送后解析数据

    我有一个应用程序设置为在两个 iOS 设备之间发送数据NSStream通过 TCP 连接 发送的数据由两部分组成 一个整数 指示即将到来的消息对象的大小 消息对象 一些NSStrings and an NSData使用 NSKeyedArc
  • 如何更改 FireFox 中悬停选择选项的颜色

    我想更改 FireFox 中悬停的选择选项的颜色 它具有默认的蓝色背景和白色前景 我试过
  • Azure 数据工厂中没有管道图

    我使用复制数据向导创建了 2 个管道 但当我单击 图表 操作时 两个管道都没有显示 我收到消息 该工厂不包含管道或数据集 管道均成功运行 并且在单击 管道 边栏选项卡时确实会显示 两条管道均配置为一次性 关于为什么会发生这种情况以及如何解决
  • int(11) 与 int(任何其他)

    我是网络编程新手 正在做一些可以在网上找到的不同教程 我进行了研究 发现在 int 11 中 11 是整数的最大显示宽度 并且它是默认值 除非整数是 UNSIGNED 在本例中为 10 当我看到这样的东西时 id INT 11 not nu
  • 如何使用 asp.net 在 Chrome 中删除或过期 cookie

    这是那些愚蠢的问题之一 答案应该很简单 但似乎不起作用 有人知道我还能去哪里寻找代表吗 我在单击按钮时添加 cookie var impersonationCookie new HttpCookie UserImp ImpAuid impe
  • 从函数返回值,其中 ipython 小部件用于获取输入参数

    我正在尝试 小部件化 我的 IPython 笔记本 但在事件和函数返回值方面遇到了麻烦 这是我认为最好的工作流程 使用小部件获取任意函数的输入值 在事件触发时调用该函数 从函数返回值 我首先尝试使用 interact 方法来调用该函数 但这
  • 有没有办法在构造函数中使用锁定的标准输入和输出,使其与您正在构造的结构一样长?

    我正在建造一个PromptSet可以连续提出一系列问题 出于测试原因 它允许您传递读取器和写入器 而不是直接使用标准输入和标准输出 因为 stdin 和 stdout 是常见的用例 所以我想创建一个默认的 构造函数 允许用户生成一个Prom
  • 如何将 div 标签附加到 SVG 矩形元素中?

    我找不到这个问题的正确解决方案 所以我决定写一个新问题 我什至不确定这是否可能 但我希望如此 这是浏览器提供的 HTML 我从浏览器中的 元素 选项卡复制它
  • 如果 ModelState.IsValid 失败,收到错误消息吗?

    我的控制器中有这个功能 HttpPost public ActionResult Edit EmployeesViewModel viewModel Employee employee GetEmployee viewModel Emplo