Asp.net mvc MVC3验证
出于某种原因,我的标识列“ID”被MVC3验证了吗?为什么我没有指定需要它时会发生这种情况。??我的视图中有这个“@Html.HiddenFor(model=>model.Id)”,这应该不会引起任何问题Asp.net mvc MVC3验证,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,出于某种原因,我的标识列“ID”被MVC3验证了吗?为什么我没有指定需要它时会发生这种情况。??我的视图中有这个“@Html.HiddenFor(model=>model.Id)”,这应该不会引起任何问题 public class User { public int Id { get; set; } [Required] public string Name { get; set; } [Required] public string Email { ge
public class User {
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
}
请提供帮助。值类型由MVC框架隐式验证
要关闭此选项,请将DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes设置为false。我找到了答案。对于我的类,我有如下包装器(viewmodel)类:
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; }
现在默认情况下,隐藏字段为0。哪个是正确的:)。
谢谢您可以在元数据中指定要排除的属性,如下所示:
[Bind(Exclude = "Id")]
public class User {
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
}
或者,只需将其声明为可为null,然后让SQL Server处理带有null的标识字段的值。这就是我一直在做的
public int? Id { get; set; }
只需在Id上添加键属性
public class User {
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
}
public class User {
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
}