C# 使用System.ComponentModel.DataAnnotations的模型绑定

C# 使用System.ComponentModel.DataAnnotations的模型绑定,c#,asp.net-mvc,model-binding,C#,Asp.net Mvc,Model Binding,我正在使用System.ComponentModel.DataAnnotations进行模型绑定和验证ASP.NET MVC应用程序 我有一个像这样的C#model班 public class Employee { public Int64 EmployeeId { get; set; } [Required] public string FullName { get; set; } [Required] public string Username

我正在使用System.ComponentModel.DataAnnotations进行模型绑定和验证ASP.NET MVC应用程序

我有一个像这样的C#model班

public class Employee
{
    public Int64 EmployeeId { get; set; }

    [Required]
    public string FullName { get; set; }

    [Required]
    public string Username { get; set; }

    public string Password { get; set; }

    [Compare("Password")]
    public string ConfirmPassword { get; set; }
}
当我通过AJAX提交表单以插入记录时,值被正确设置为
Employee
object

但是
ModelState.IsValid
语句始终为false,并且它表示EmployeeId字段是必需的

因为
EmployeeId
是数据库中的一个标识列,所以我没有在controller中设置它

如何解决此问题


更新记录时,我需要根据需要制作
EmployeeId
。我该如何处理呢?

我认为最简单/最干净的方法是将
EmployeeId
设为空:

公共类员工
{
public Int64?EmployeeId{get;set;}
// ...
}

实际上,如果您无法解决该错误并希望消除该错误,则只需从Modelstate中清除该错误…..Modelstate.Remove(“{key}”);要删除错误,您可以在将表单发布到的方法中添加属性
[Bind(Exclude=“EmployeeId”)]
。它看起来像:
public ActionResult InsertRecord([Bind(Exclude=“EmployeeId”)]Employee-Employee)
因为插入和更新发生在同一个函数中,所以我认为不能添加
[Bind(Exclude=“EmployeeId”)]
属性<代码>ModelState.Remove(“{key}”)会有帮助。@AutumnValentine啊,我明白了。我不知道这个事实。那么,
Remove
应该适用于您的案例。