21

モデルでasp.netmvc4を使用していますが、Maxlength属性を使用していますが、文字列では機能しません。Stringlengthだけが機能します誰もが同じ問題を抱えていますか?解決方法に問題があった場合は?私のフィールドを検証するためには機能しませんこれが私のコードです

(動作していません)

[Required]
[MaxLength(80)]
[DisplayName("Contact Name:")]
public string ContactName { get; set; }

(働く)

[Required]
[StringLength(80)]
[DisplayName("Contact Name:")]
public string ContactName { get; set; }
4

3 に答える 3

37

両方の属性はSystem.ComponentModel.DataAnnotations名前空間にあります

EntityFrameworkのMicrosoftOfficialWebsite[MaxLength]属性によると、Entity Frameworkは、ケースのデータベースの列の最大長を認識しているためです(varchar(80)など) 。

プロパティで許可される配列または文字列データの最大長を指定します。

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.maxlengthattribute.aspx

あなたのコメントの1つにあるように、@jackncokeの返信でEntityFramework[MaxLength(80)]を使用していないため、機能しないとのことです。

しかし、2番目のケース[StringLength(80)]では、Entity Frameworkに依存していないため、機能しています。

SO[StringLength(80)]は、Entity Frameworkを使用している場合と使用していない場合の両方で、機能します。

データフィールドで許可される文字の最小長と最大長を指定します。

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.stringlengthattribute.aspx

于 2013-02-28T17:57:24.667 に答える
6

[MaxLength(80)]に変更し[StringLength(80)]ますが、あなたがそれに私を倒したように見えます!

この問題を抱えているのはあなただけではありません

MaxLength属性がクライアント側の検証属性を生成しない

于 2013-01-31T15:21:42.270 に答える
3

MVC4ではMaxLengthが正しく機能したので、確認する必要があります

public class RegisterModel
{
    [Required]
    [Display(Name = "User name")]
    [MaxLength(5)]  //MaxLength worked properly.
    public string UserName { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

ここに画像の説明を入力してください

于 2013-07-18T09:58:02.833 に答える