1

このモデルを使用した 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; }

意見:

Html.EnableClientValidation();

出力されたクライアント側の検証:

   {
        "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"
            }
        ]
    }

小数フィールドがデフォルトの必須属性を追加するのはなぜですか? 必要な検証タイプを削除する必要があります。

4

1 に答える 1

0

小数はnull許容である必要があります。そうでない場合、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アクションメソッドのdecimalパラメーターに空白のフィールドを渡そうとするとより明確になります。

于 2012-08-27T23:45:10.300 に答える