2011-01-28 118 views
2

出於某種原因,我的標識列「ID」得到MVC3驗證?爲什麼會發生這種情況,我沒有指定它是必需的。我有這個「@ Html.HiddenFor(model => model.Id)」在我看來,這不應該導致任何問題。MVC3驗證

public class User { 
    public int Id { get; set; } 
    [Required] 
    public string Name { get; set; } 
    [Required] 
    public string Email { get; set; } 
} 

請大家幫忙。

回答

1

我想通了。我的課,我有包裝(視圖模型)類,像這樣:

public class AdminsEditViewModel<T> 
    { 
     /// <summary> 
     /// Initializes a new instance of the <see cref="AdminsEditViewModel"/> class. 
     /// </summary> 
     public AdminsEditViewModel() 
     { 
      this.Admin = new Admin(); 
      this.GroupIn = new List<int>(); 
      this.GroupNotIn = new List<int>(); 
     } 

     /// <summary> 
     /// Gets or sets Admin. 
     /// </summary> 
     public Admin Admin { get; set; } 

我不得不加入這行:默認情況下隱藏字段

this.Admin = new Admin(); 

現在得到0。這是正確的:)。 感謝

4

值類型由MVC框架隱式驗證。

要關閉此設置,請將DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes設置爲false。

0

您可以在元數據如下指定要排除的屬性:

[Bind(Exclude = "Id")] 
public class User { 

    [Required] 
    public string Name { get; set; } 
    [Required] 
    public string Email { get; set; } 

} 
0

或者,也許,只是聲明爲可爲空,然後讓SQL Server的照顧值的身份字段與它爲空。這就是我一直在做...

public int? Id { get; set; } 
0

上你的身份證只需添加關鍵屬性

public class User { 
    [Key] 
    public int Id { get; set; } 
    [Required] 
    public string Name { get; set; } 
    [Required] 
    public string Email { get; set; } 
}