1

フォームの送信を許可する前に、HTMLフォームのチェックボックスをtrueとしてマークするように強制するというビジネス要件があります。

このボックスが適切なメッセージでチェックされていない場合、ユーザーをフォームに戻すことができますが、フォームデータのxVal検証からすべての情報を同時に返したいと思います。

他の場所で情報を見つけることができないので、DataAnnotationを使用するのと同様に、[Range(min, max)]xValを使用してブール値をtrue(またはfalse)に検証することは可能ですか、またはこの情報を手動で含め.AddModelError(..)てViewModelにエラーを追加する必要がありますか?

4

2 に答える 2

4

独自の ValidationAttribute を作成してみましたか? この種の状況のた​​めに TrueTypeAttribute を作成しました。

using System;
using System.ComponentModel.DataAnnotations;

namespace KahunaCentralMVC.Data.ModelValidation.CustomValidationAttributes
{
    public class TrueTypeAttribute : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            if (value == null) return false;
            bool newVal;
            try
            {
                newVal = Convert.ToBoolean(value);
                if (newVal)
                    return true;
                else
                    return false;
            }
            catch (InvalidCastException)
            {
                return false;
            }
        }
    }
}

[MetadataType(typeof(FooMetadata))]
public partial class Foo
{
    public class FooMetadata
    {
        [Required(ErrorMessage = " [Required] ")]
        [TrueTypeAttribute(ErrorMessage = " [Required] ")]
        public bool TruVal { get; set; }
    }
}
于 2010-01-22T21:58:44.477 に答える
1

xVal は、チェックする必要があるチェックボックスの必須フィールド データ注釈を扱います。チェックボックスがtrueまたはfalse(nullではない)になるnull不可のブール値を表現しようとしていたため、最近この状況を回避する必要がありました。しかし、あなたの場合、これは完全に機能します。ただし、おそらく「これらの条件に同意する必要があります」タイプのメッセージを探している場合に、必須フィールドの検証メッセージが表示されます。

xval リモート ルール検証を使用し、ajax リソースから検証するのが最も簡単な場合があります。

于 2010-01-21T15:55:45.933 に答える