ModelState.IsValid 还是 Model.IsValid?

2023-12-31

当我遇到两种方法(我认为同样有效)来做某事时,我正在编写一个控制器并为其进行单元测试。我的所有模型都有一个 IsValid 属性,我可以检查该属性以询问模型是否有效。

在回发到控制器操作方法时,如果模型有效,我想保存,否则我想重新显示表单以供用户纠正错误。

我最初的想法是验证模型是否被询问是否有效,但我意识到我也可以检查 ModelState.IsValid。

有人有什么特别的理由来比较其中一种与另一种吗?


我认为将自定义业务验证内置到模型中是一个很好的方法。我处理它的方法是将任何自定义验证错误添加到 ModelState 中:

if (ModelState.IsValid)
{
    if (!model.IsValid)
    {
       ModelState.AddModelError("The model is not valid");
    }
    else
    {
        return RedirectToAction("Index");
    }
}

return View(model);

这样,您的视图就可以访问验证错误,无论它们是自定义的还是内置的。

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

ModelState.IsValid 还是 Model.IsValid? 的相关文章

随机推荐

  • 是否可以优化我的自定义反序列化器?

    我创建了一个新的自定义反序列化器 当 json 中存在空字符串时 它会返回 null public class CustomDeserializer extends JsonDeserializer
  • 无法安装动物园包(R)

    我正在尝试使用以下方法下载动物园包来处理时间序列 install packages zoo 但我收到以下消息 Please select a CRAN mirror for use in this session Warning unabl
  • JS insertBefore() 并传递一个包含 html 的字符串

    我正在寻找一种方法 如何在纯 JavaScript 中的元素之前插入内容 我有一个页脚元素 html
  • WordPress 和被动事件侦听器的最佳实践

    所以我在 Chrome 中对一个网站进行了审核 谷歌说我应该使用被动事件侦听器 我查看了代码并发现它来自 wordpress 表情符号集成
  • 如何在启动时运行 shell 脚本

    On an 亚马逊S3 https en wikipedia org wiki Amazon S3Linux 实例 我有两个名为start my app and stop my app启动和停止forever https www npmjs
  • 如何以编程方式打开 SearchView?

    ActionBar 有一个名为 SearchView 的小部件 不使用时 它看起来像这样 当它在使用时 它看起来像这样 我想 当然以编程方式 打开搜索视图 使其 使用中 我尝试了几个功能 例如 SearchView searchView S
  • 如何在 R 中复制月度周期图

    我想使用 R 和任何使其看起来不错的包输出一个与本页 右侧 所示的图表类似的图表 http processtrends com pg charts monthly cycle chart htm http processtrends com
  • 检索SQL语句的输出参数

    我正在使用一个有两列的表格 customer id and customer name customer name是一个简单的varchar customer id是一个自动递增的主键 我想使用我的 C 应用程序插入customer nam
  • 更改 BATCH 中的区域和语言选项

    如何使用批处理代码更改 Windows XP 和 7 中的区域和语言选项 我想使用 bat 文件将 标准和格式 更改为墨西哥西班牙语 这些设置位于注册表中HKCU Control Panel International 您可以使用 reg
  • ExtJS:在局部变量中获取代理帖子的响应

    我是 ExtJS 的新手 所以如果这是非常基本的 请原谅 我用谷歌搜索但找不到任何有用的答案 我有一个带有 AJAX 代理类型的商店 tableStore Ext create Ext data Store model TableData
  • 如何通过 IAM 控制用户对 Amazon DynamoDB 数据的访问?

    Does AWS 身份和访问管理 IAM http aws amazon com iam 提供一种方法 使用户只能编辑或删除某个项目中的项目亚马逊动态数据库 http aws amazon com dynamodb 他之前添加的表 AWS
  • Qt 的图表库[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SSIS - OLE DB 目标 - 表或视图加载与快速加载

    据我读到 表或视图数据访问模式将每一行作为一个事务一次提交 因此 制作一个传输 500 万行的包需要很长时间 30 分钟以上 快速加载数据访问模式允许在插入到目标时指定批处理行和提交大小 例如 插入 500 万条记录只需 2 分钟多一点 现
  • 如何在 ASP.NET MVC 中使用 Windows 语音合成器

    我尝试使用System Speech在 ASP NET mvc 应用程序中生成语音的类 HttpPost public ActionResult TTS string text SpeechSynthesizer speechSynthes
  • 用 OpenGL 绘制彩色网格?

    我的目标是能够创建所谓的占用网格 它类似于图块 网格游戏 看起来像附图 这是我正在从事的一个小型机器人项目 一切都是用 C C 完成的 所以我希望能够 更改分辨率或每个网格单元的大小 例如 1x1cm 或 5x5cm 等 根据某些标准更改每
  • 如何在 Sublime Text 3 中跳转到上一个和最后一个光标? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在 Sublime Text 中前后跳转光标位置历史记录 我用谷歌搜索了很多并发现缓冲区滚动 https github com tito
  • npm script 命令用于从另一个 package.json 运行脚本命令

    我有两个使用 npm 的独立项目 所以我都有 some base folder projectA package json and some base folder projectB package json 每个文件都有一个scripts
  • JSON 值不会插入到 ArrayList [重复]

    这个问题在这里已经有答案了 有人可以帮助我如何将 JSON 值添加到列表中吗 尽管放置了 List add 函数 但我似乎无法插入它 这是我第一次在 Android 中修改 JSON 的东西 我真的很感谢你的帮助 P S 不知何故 API
  • 使用 JInitator 在 Internet Explorer 8 中使用 Oracle Forms/Applications

    有人能够让运行 JInitator 的 Oracle Forms 在 Internet Explorer 8 中贷款吗 我尝试删除所有附加组件 各种版本的 Java 使用通配符将域添加到受信任的站点 并使用兼容模式 但均无济于事 我希望我们
  • ModelState.IsValid 还是 Model.IsValid?

    当我遇到两种方法 我认为同样有效 来做某事时 我正在编写一个控制器并为其进行单元测试 我的所有模型都有一个 IsValid 属性 我可以检查该属性以询问模型是否有效 在回发到控制器操作方法时 如果模型有效 我想保存 否则我想重新显示表单以供