gpt4 book ai didi

asp.net-mvc - AddImplicitRequiredAttributeForValueTypes 如何真正起作用以及它的用途是什么?

转载 作者:行者123 更新时间:2023-12-04 13:54:21 24 4
gpt4 key购买 nike

这是一个描述(ASP.NET MVC 3):

  • 我有这个参数 DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes在默认值 true (用调试器检查)
  • 我的模型中有值类型字段( intDateTimedecimal ):
    public class MyModel
    {
    public int SomeField { get; set; }
    }
  • 当我将空表单发布到此操作时(未指定 SomeField):
      public ActionResult Submit(MyModel request)
    {
    if (ModelState.IsValid)
    {
    ..
    }
    else
    {
    ..
    }
    }
  • 我没有任何验证错误!在我看来是合乎逻辑的—— int 的默认值是 0 .这是一个值。

  • 问题:

    如果我想强制这个值总是在请求中明确设置,我应该让它可以为空并放置 [Required]就可以了。但是什么 DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes是为了?

    最佳答案

    如果我们引用 ASP.NET MVC 源代码,DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes仅在 DataAnnotationsModelValidatorProvider.Getvalidators 中检查为 HTML Helpers 提供验证元数据的方法(渲染 data-val-* 属性时)和 DefaultModelBinder .

    所以,DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes当需要更改客户端验证的行为并允许将值类型的空值(即字段已发布但未设置值)传递给 Controller ​​操作时,可以设置。

    关于asp.net-mvc - AddImplicitRequiredAttributeForValueTypes 如何真正起作用以及它的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9310084/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com