Asp.net mvc 需要客户端验证mvc 2编号错误

Asp.net mvc 需要客户端验证mvc 2编号错误,asp.net-mvc,client-side-validation,Asp.net Mvc,Client Side Validation,我有一个使用此模型的ASP.NET MVC2项目: [DisplayName("Valor(%)")] [Required(ErrorMessage = "Este dato es requerido")] public decimal HOJ_ATI_CONT_SAPO_VALOR1 { get; set; } [DisplayName("Valor(%)")] public decimal HOJ_ATI_CONT_SAPO_VALOR2 { ge

我有一个使用此模型的ASP.NET MVC2项目:

    [DisplayName("Valor(%)")]
    [Required(ErrorMessage = "Este dato es requerido")]
    public decimal HOJ_ATI_CONT_SAPO_VALOR1  { get; set; }

    [DisplayName("Valor(%)")]
    public decimal HOJ_ATI_CONT_SAPO_VALOR2 { get; set; }
视图:

以及输出客户端验证:

   {
        "FieldName": "HOJ_ATI_CONT_SAPO_VALOR1",
        "ReplaceValidationMessageContents": true,
        "ValidationMessageId": "HOJ_ATI_CONT_SAPO_VALOR1_validationMessage",
        "ValidationRules": [
            {
                "ErrorMessage": "Este dato es requerido",
                "ValidationParameters": {},
                "ValidationType": "required"
            },
            {
                "ErrorMessage": "The field Valor(%) must be a number.",
                "ValidationParameters": {},
                "ValidationType": "number"
            }
        ]
    },
    {
        "FieldName": "HOJ_ATI_CONT_SAPO_VALOR2",
        "ReplaceValidationMessageContents": true,
        "ValidationMessageId": "HOJ_ATI_CONT_SAPO_VALOR2_validationMessage",
        "ValidationRules": [
            {
                "ErrorMessage": "The Valor(%) field is required.",
                "ValidationParameters": {},
                "ValidationType": "required"
            },
            {
                "ErrorMessage": "The field Valor(%) must be a number.",
                "ValidationParameters": {},
                "ValidationType": "number"
            }
        ]
    }
为什么十进制字段会添加默认的必需属性?
我需要删除必需的validationtype。

您的小数必须可以为空,否则MVC将要求它们

[DisplayName("Valor(%)")]
[Required(ErrorMessage = "Este dato es requerido")]
public decimal? HOJ_ATI_CONT_SAPO_VALOR1  { get; set; }

[DisplayName("Valor(%)")]
public decimal? HOJ_ATI_CONT_SAPO_VALOR2 { get; set; }
我相信这是因为不存在空的小数点-如果没有设置小数点,那么它将存储为“0”。如果您尝试在MVC操作方法上向十进制参数传递一个空白字段,这一点就更清楚了

[DisplayName("Valor(%)")]
[Required(ErrorMessage = "Este dato es requerido")]
public decimal? HOJ_ATI_CONT_SAPO_VALOR1  { get; set; }

[DisplayName("Valor(%)")]
public decimal? HOJ_ATI_CONT_SAPO_VALOR2 { get; set; }