C# ModelState.isValid始终为false

C# ModelState.isValid始终为false,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,有一个线索: 公共类线索 { [关键] 公共int Id{get;set;} [必需] [MaxLength(100)] 公共字符串名称{get;set;} } 包含一辆或多辆车辆的人员: 公共级车辆 { 公共车辆() { Hash=Helpers.CreateGuid(); } [关键] 公共int Id{get;set;} [必需] 公共字符串哈希{get;set;} [必需] 公共线索线索{get;set;} [MaxLength(100)] 公共字符串品牌{get;set;} [Max

有一个线索:

公共类线索
{
[关键]
公共int Id{get;set;}
[必需]
[MaxLength(100)]
公共字符串名称{get;set;}
}
包含一辆或多辆车辆的人员:

公共级车辆
{
公共车辆()
{
Hash=Helpers.CreateGuid();
}
[关键]
公共int Id{get;set;}
[必需]
公共字符串哈希{get;set;}
[必需]
公共线索线索{get;set;}
[MaxLength(100)]
公共字符串品牌{get;set;}
[MaxLength(100)]
公共字符串模型{get;set;}
}
每次我尝试更新车辆时,modelState无效。 问题已经出现,它说这是必须的。这是真的。 当我收到邮件时:

[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务编辑(int-id,[Bind(“id,Lead,Hash,Brand,Model”)]车辆)
{
如果(id!=车辆.id)
{
返回NotFound();
}
如果(ModelState.IsValid)。。。
并且ModelState.IsValid始终为false。。。 我之前试着加上这个

var lead=\u context.Leads.Find(int.Parse(Request.Form[“lead”].ToString());
车辆。铅=铅;
但同样的问题…Lead是空的,模型要求它有一个值

怎么了

但同样的问题…Lead是空的,模型要求它有一个值

是的,这就是原因。Lead类中的
Name
属性是必需的,它必须有一个值

您可以在视图中为
Lead
中的属性添加输入,如下所示:

<input asp-for="Lead.Id" type="hidden" />
<input asp-for="Lead.Name" type="hidden" />


您是如何发送数据来编辑操作的?有点奇怪。在车辆模型中,您有Lead类型的Lead属性。但是这里:var Lead=\u context.Leads.Find(int.Parse(Request.Form[“Lead”].ToString());您希望它是表单数据中的一个数字。请检查您传递给操作方法的数据。老实说,我宁愿使用另一个模型来接受编辑数据,而不是使用Bind属性。whati是Request的值。表单[“Lead”]。ToString()?@Nonik by post..这只是一个表单..@VolodymyrPuzdriak您指的是使用某种DTO(ex-viewModel)而不是我在数据库中使用的相同模型?lead值是一个数字:为什么需要lead.Name?如果我只需要映射lead的id?