3

String プロパティと次の Data Annotation を持つ ViewModel があります。

文字列を操作するように編集

[DataType(DataType.Date, ErrorMessage="Not Working !!!")]
public String StringBirthDate1 { get; set; }

それが私の見解です

@Html.EditorFor(model => model.StringBirthDate1 )
@Html.ValidationMessageFor(model => model.StringBirthDate1)

アプリケーションを実行して「---」や 29.02.1900 のような無効な日付を入力しても、検証エラーは発生しません。

4

3 に答える 3

5

わかりました、組み込みの MVC ツールをデータ検証に使用するのをあきらめました。

カスタム Validation Attribute を実行しました:

public class ValidDateStringAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        DateTime dtout;
        if (DateTime.TryParse(value.ToString(), out dtout ))
        {
            return true;
        }
        return false;
    }
}

カスタム属性で装飾されたビューモデルは次のとおりです。

[ValidDateString(ErrorMessage="Invalid date format")]
public String BirthDate1 { get; set; }

魅力のように機能します:-)

于 2012-09-05T08:58:50.517 に答える
2

[DataType(DataType.Date, ErrorMessage="Not Working !!!")] が文字列プロパティにアタッチされたときに機能しているように思えます。使用してみてください:

[DataType(DataType.Date, ErrorMessage="Not Working !!!")]
puplic string StringBirthDate1{get;set;}

public DateTime BirthDate1 
{ 
    get{return DateTime.Parse(StringBirthDate1);} 
    set{StringBirthDate1 = value.ToString();} 
}
于 2012-09-05T07:31:27.480 に答える