返回题库高级 .NET 刷题ASP.NET Core 选择题 · 第 19 / 50 篇

ASP.NET Core 试题 19:MVC 模型验证

0361 在 ModelState 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. ModelState.IsValid 为 true 就能保证数据库写入成功
  • B. 检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量
  • C. ModelState 同时保存绑定值、转换错误和模型验证错误
  • D. 观察到“并发更新通过验证后仍发生冲突”即可把一次现象当成完整框架契约。
查看答案与解析

正确答案C

正确答案直接描述 ModelState 的主规则:ModelState 同时保存绑定值、转换错误和模型验证错误。选项“检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量”是使用规则时要验证的边界,不是规则本身;“ModelState.IsValid 为 true 就能保证数据库写入成功”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0362 并发更新通过验证后仍发生冲突。排查时哪项动作最合理?

难度: 进阶

  • A. 先验证“检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量”,再依据“ModelState 同时保存绑定值、转换错误和模型验证错误”判断实现是否符合契约。
  • B. 直接按“ModelState.IsValid 为 true 就能保证数据库写入成功”定性,不再检查配置、身份或运行时证据。
  • C. 只增加重试次数或机器资源,暂不核对“检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量”。
  • D. 以一次成功请求作为结论,不再确认“ModelState 同时保存绑定值、转换错误和模型验证错误”是否成立。
查看答案与解析

正确答案A

场景“并发更新通过验证后仍发生冲突”指向 ModelState,但症状本身不能证明根因。正确排查应先确认边界“检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量”,再用主规则“ModelState 同时保存绑定值、转换错误和模型验证错误”解释证据。直接采用误区“ModelState.IsValid 为 true 就能保证数据库写入成功”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0363 关于 ModelState,以下哪项说法不成立?

难度: 实战

  • A. ModelState 同时保存绑定值、转换错误和模型验证错误
  • B. 检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量
  • C. 出现“并发更新通过验证后仍发生冲突”时,应收集证据并同时核对主规则与适用边界。
  • D. ModelState.IsValid 为 true 就能保证数据库写入成功
查看答案与解析

正确答案D

题目要求选出不成立的说法,答案“ModelState.IsValid 为 true 就能保证数据库写入成功”正是 ModelState 的典型误区。其余三项分别给出了主规则“ModelState 同时保存绑定值、转换错误和模型验证错误”、适用边界“检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0364 针对“并发更新通过验证后仍发生冲突”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“ModelState.IsValid 为 true 就能保证数据库写入成功”修改实现,并把一次请求成功作为验收结果。
  • B. 按“ModelState 同时保存绑定值、转换错误和模型验证错误”修正实现,并用测试或遥测验证“检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量”。
  • C. 按“ModelState 同时保存绑定值、转换错误和模型验证错误”修改代码后直接上线,不验证“检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量”。
  • D. 只验证“检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量”,但实现仍继续依赖“ModelState.IsValid 为 true 就能保证数据库写入成功”。
查看答案与解析

正确答案B

完整决策同时覆盖规则与验证:ModelState 同时保存绑定值、转换错误和模型验证错误;并确认 检查 IsValid 只能说明已声明输入规则通过,不能代替授权和领域不变量。继续接受“ModelState.IsValid 为 true 就能保证数据库写入成功”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“并发更新通过验证后仍发生冲突”这一生产场景能否安全上线。

0365 在 自动 400 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. 自动 400 会在客户端请求前执行并修复无效输入
  • B. 需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性
  • C. 观察到“自定义错误响应后监控看不到验证失败”即可把一次现象当成完整框架契约。
  • D. 带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400
查看答案与解析

正确答案D

正确答案直接描述 自动 400 的主规则:带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400。选项“需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性”是使用规则时要验证的边界,不是规则本身;“自动 400 会在客户端请求前执行并修复无效输入”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0366 自定义错误响应后监控看不到验证失败。排查时哪项动作最合理?

难度: 进阶

  • A. 先验证“需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性”,再依据“带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400”判断实现是否符合契约。
  • B. 直接按“自动 400 会在客户端请求前执行并修复无效输入”定性,不再检查配置、身份或运行时证据。
  • C. 只增加重试次数或机器资源,暂不核对“需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性”。
  • D. 以一次成功请求作为结论,不再确认“带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400”是否成立。
查看答案与解析

正确答案A

场景“自定义错误响应后监控看不到验证失败”指向 自动 400,但症状本身不能证明根因。正确排查应先确认边界“需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性”,再用主规则“带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400”解释证据。直接采用误区“自动 400 会在客户端请求前执行并修复无效输入”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0367 关于 自动 400,以下哪项说法不成立?

难度: 实战

  • A. 带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400
  • B. 自动 400 会在客户端请求前执行并修复无效输入
  • C. 需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性
  • D. 出现“自定义错误响应后监控看不到验证失败”时,应收集证据并同时核对主规则与适用边界。
查看答案与解析

正确答案B

题目要求选出不成立的说法,答案“自动 400 会在客户端请求前执行并修复无效输入”正是 自动 400 的典型误区。其余三项分别给出了主规则“带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400”、适用边界“需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0368 针对“自定义错误响应后监控看不到验证失败”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“自动 400 会在客户端请求前执行并修复无效输入”修改实现,并把一次请求成功作为验收结果。
  • B. 按“带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400”修改代码后直接上线,不验证“需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性”。
  • C. 按“带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400”修正实现,并用测试或遥测验证“需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性”。
  • D. 只验证“需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性”,但实现仍继续依赖“自动 400 会在客户端请求前执行并修复无效输入”。
查看答案与解析

正确答案C

完整决策同时覆盖规则与验证:带 ApiController 的控制器会在无效 ModelState 时通过 ModelStateInvalidFilter 自动返回 400;并确认 需要统一错误格式时可配置 InvalidModelStateResponseFactory,但应保留可观测性。继续接受“自动 400 会在客户端请求前执行并修复无效输入”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“自定义错误响应后监控看不到验证失败”这一生产场景能否安全上线。

0369 在 验证特性 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. Required 会检查字符串是否只包含空格并完成所有业务验证
  • B. 复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底
  • C. 观察到“空白用户名通过属性验证”即可把一次现象当成完整框架契约。
  • D. Required、Range、StringLength 等特性适合声明局部字段约束
查看答案与解析

正确答案D

正确答案直接描述 验证特性 的主规则:Required、Range、StringLength 等特性适合声明局部字段约束。选项“复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底”是使用规则时要验证的边界,不是规则本身;“Required 会检查字符串是否只包含空格并完成所有业务验证”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0370 空白用户名通过属性验证。排查时哪项动作最合理?

难度: 进阶

  • A. 直接按“Required 会检查字符串是否只包含空格并完成所有业务验证”定性,不再检查配置、身份或运行时证据。
  • B. 只增加重试次数或机器资源,暂不核对“复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底”。
  • C. 先验证“复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底”,再依据“Required、Range、StringLength 等特性适合声明局部字段约束”判断实现是否符合契约。
  • D. 以一次成功请求作为结论,不再确认“Required、Range、StringLength 等特性适合声明局部字段约束”是否成立。
查看答案与解析

正确答案C

场景“空白用户名通过属性验证”指向 验证特性,但症状本身不能证明根因。正确排查应先确认边界“复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底”,再用主规则“Required、Range、StringLength 等特性适合声明局部字段约束”解释证据。直接采用误区“Required 会检查字符串是否只包含空格并完成所有业务验证”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0371 关于 验证特性,以下哪项说法不成立?

难度: 实战

  • A. Required、Range、StringLength 等特性适合声明局部字段约束
  • B. Required 会检查字符串是否只包含空格并完成所有业务验证
  • C. 复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底
  • D. 出现“空白用户名通过属性验证”时,应收集证据并同时核对主规则与适用边界。
查看答案与解析

正确答案B

题目要求选出不成立的说法,答案“Required 会检查字符串是否只包含空格并完成所有业务验证”正是 验证特性 的典型误区。其余三项分别给出了主规则“Required、Range、StringLength 等特性适合声明局部字段约束”、适用边界“复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0372 针对“空白用户名通过属性验证”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“Required、Range、StringLength 等特性适合声明局部字段约束”修正实现,并用测试或遥测验证“复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底”。
  • B. 按“Required 会检查字符串是否只包含空格并完成所有业务验证”修改实现,并把一次请求成功作为验收结果。
  • C. 按“Required、Range、StringLength 等特性适合声明局部字段约束”修改代码后直接上线,不验证“复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底”。
  • D. 只验证“复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底”,但实现仍继续依赖“Required 会检查字符串是否只包含空格并完成所有业务验证”。
查看答案与解析

正确答案A

完整决策同时覆盖规则与验证:Required、Range、StringLength 等特性适合声明局部字段约束;并确认 复杂跨字段规则可用 IValidatableObject 或专用验证器,数据库唯一性仍需约束兜底。继续接受“Required 会检查字符串是否只包含空格并完成所有业务验证”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“空白用户名通过属性验证”这一生产场景能否安全上线。

0373 在 重新验证模型 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. 修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证
  • B. TryValidateModel 会重新执行模型绑定并重新读取请求正文
  • C. 必须只清理需要重算的前缀,避免误删其他输入错误
  • D. 观察到“服务器补全字段后希望验证最终对象”即可把一次现象当成完整框架契约。
查看答案与解析

正确答案A

正确答案直接描述 重新验证模型 的主规则:修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证。选项“必须只清理需要重算的前缀,避免误删其他输入错误”是使用规则时要验证的边界,不是规则本身;“TryValidateModel 会重新执行模型绑定并重新读取请求正文”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0374 服务器补全字段后希望验证最终对象。排查时哪项动作最合理?

难度: 进阶

  • A. 直接按“TryValidateModel 会重新执行模型绑定并重新读取请求正文”定性,不再检查配置、身份或运行时证据。
  • B. 只增加重试次数或机器资源,暂不核对“必须只清理需要重算的前缀,避免误删其他输入错误”。
  • C. 以一次成功请求作为结论,不再确认“修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证”是否成立。
  • D. 先验证“必须只清理需要重算的前缀,避免误删其他输入错误”,再依据“修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证”判断实现是否符合契约。
查看答案与解析

正确答案D

场景“服务器补全字段后希望验证最终对象”指向 重新验证模型,但症状本身不能证明根因。正确排查应先确认边界“必须只清理需要重算的前缀,避免误删其他输入错误”,再用主规则“修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证”解释证据。直接采用误区“TryValidateModel 会重新执行模型绑定并重新读取请求正文”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0375 关于 重新验证模型,以下哪项说法不成立?

难度: 实战

  • A. 修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证
  • B. TryValidateModel 会重新执行模型绑定并重新读取请求正文
  • C. 必须只清理需要重算的前缀,避免误删其他输入错误
  • D. 出现“服务器补全字段后希望验证最终对象”时,应收集证据并同时核对主规则与适用边界。
查看答案与解析

正确答案B

题目要求选出不成立的说法,答案“TryValidateModel 会重新执行模型绑定并重新读取请求正文”正是 重新验证模型 的典型误区。其余三项分别给出了主规则“修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证”、适用边界“必须只清理需要重算的前缀,避免误删其他输入错误”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0376 针对“服务器补全字段后希望验证最终对象”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“TryValidateModel 会重新执行模型绑定并重新读取请求正文”修改实现,并把一次请求成功作为验收结果。
  • B. 按“修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证”修改代码后直接上线,不验证“必须只清理需要重算的前缀,避免误删其他输入错误”。
  • C. 按“修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证”修正实现,并用测试或遥测验证“必须只清理需要重算的前缀,避免误删其他输入错误”。
  • D. 只验证“必须只清理需要重算的前缀,避免误删其他输入错误”,但实现仍继续依赖“TryValidateModel 会重新执行模型绑定并重新读取请求正文”。
查看答案与解析

正确答案C

完整决策同时覆盖规则与验证:修改模型后可清除对应 ValidationState 再调用 TryValidateModel 重新验证;并确认 必须只清理需要重算的前缀,避免误删其他输入错误。继续接受“TryValidateModel 会重新执行模型绑定并重新读取请求正文”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“服务器补全字段后希望验证最终对象”这一生产场景能否安全上线。

0377 在 最大验证深度 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. 验证器会无上限遍历任何循环引用且不会中止
  • B. MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源
  • C. 输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图
  • D. 观察到“恶意深层 JSON 导致高 CPU”即可把一次现象当成完整框架契约。
查看答案与解析

正确答案B

正确答案直接描述 最大验证深度 的主规则:MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源。选项“输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图”是使用规则时要验证的边界,不是规则本身;“验证器会无上限遍历任何循环引用且不会中止”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0378 恶意深层 JSON 导致高 CPU。排查时哪项动作最合理?

难度: 进阶

  • A. 直接按“验证器会无上限遍历任何循环引用且不会中止”定性,不再检查配置、身份或运行时证据。
  • B. 只增加重试次数或机器资源,暂不核对“输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图”。
  • C. 先验证“输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图”,再依据“MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源”判断实现是否符合契约。
  • D. 以一次成功请求作为结论,不再确认“MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源”是否成立。
查看答案与解析

正确答案C

场景“恶意深层 JSON 导致高 CPU”指向 最大验证深度,但症状本身不能证明根因。正确排查应先确认边界“输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图”,再用主规则“MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源”解释证据。直接采用误区“验证器会无上限遍历任何循环引用且不会中止”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0379 关于 最大验证深度,以下哪项说法不成立?

难度: 实战

  • A. MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源
  • B. 输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图
  • C. 出现“恶意深层 JSON 导致高 CPU”时,应收集证据并同时核对主规则与适用边界。
  • D. 验证器会无上限遍历任何循环引用且不会中止
查看答案与解析

正确答案D

题目要求选出不成立的说法,答案“验证器会无上限遍历任何循环引用且不会中止”正是 最大验证深度 的典型误区。其余三项分别给出了主规则“MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源”、适用边界“输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0380 针对“恶意深层 JSON 导致高 CPU”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源”修正实现,并用测试或遥测验证“输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图”。
  • B. 按“验证器会无上限遍历任何循环引用且不会中止”修改实现,并把一次请求成功作为验收结果。
  • C. 按“MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源”修改代码后直接上线,不验证“输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图”。
  • D. 只验证“输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图”,但实现仍继续依赖“验证器会无上限遍历任何循环引用且不会中止”。
查看答案与解析

正确答案A

完整决策同时覆盖规则与验证:MVC 提供最大验证深度等限制以防止深层或循环对象图消耗过多资源;并确认 输入模型应保持有限和专用,不能依赖提高上限接受任意复杂对象图。继续接受“验证器会无上限遍历任何循环引用且不会中止”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“恶意深层 JSON 导致高 CPU”这一生产场景能否安全上线。

官方资料

当前分类

ASP.NET Core 选择题

查看全部分类 →
  1. 17ASP.NET Core 试题 17:Controller 与 Action20 题
  2. 18ASP.NET Core 试题 18:MVC 模型绑定20 题
  3. 19ASP.NET Core 试题 19:MVC 模型验证20 题
  4. 20ASP.NET Core 试题 20:内容协商与格式化程序20 题
  5. 21ASP.NET Core 试题 21:MVC 过滤器20 题
ESC

输入关键词开始搜索