C# 验证一个或多个实体失败-保存更改部分

C# 验证一个或多个实体失败-保存更改部分,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,当代码转到SaveChanges部分时,我遇到了这个错误。在这里,我将验证文本框 模型 看法 问题到底是什么?FirstName是必填字段。但是当我要验证时,它会显示错误。您是否看到任何FirstName值出现?您的意思是验证错误不会显示在您的网页中,但您进入存储库保存,但在那里失败?我还不太熟悉ASP.Net MVC,但我突然想到,在您看来,您使用的lambda在箭头modelItem=>item.FirstName周围有不同的名称(modelItem和item)。这是堆栈溢出中的输入错误还是

当代码转到SaveChanges部分时,我遇到了这个错误。在这里,我将验证文本框

模型

看法


问题到底是什么?FirstName是必填字段。但是当我要验证时,它会显示错误。您是否看到任何
FirstName
值出现?您的意思是验证错误不会显示在您的网页中,但您进入存储库保存,但在那里失败?我还不太熟悉ASP.Net MVC,但我突然想到,在您看来,您使用的lambda在箭头
modelItem=>item.FirstName
周围有不同的名称(
modelItem
item
)。这是堆栈溢出中的输入错误还是代码中的问题?应该使用EditorFor而不是displayfor。否则,您可以使用Html.TextBoxFor(m=>m.Name)绑定textbox,这样您就可以将textbox值发布到模型中,然后验证将不会抛出所需的异常。
 public class CustomerSupplierModels : DbContext
{
    public class Customer_Supplier
    {
        public int CustomerSupplierId { get; set; }
        [Required(ErrorMessage = "FirstName is required")]
        public string FirstName { get; set; }
     //Some code here
 }}
    @foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.FirstName)
            @Html.ValidationMessageFor(modelItem => item.FirstName)

        </td>
      //Some code here
}
public int AddorUpdateCustomerSupplier(Customer_Supplier cs)
    {
        try
        {
            if (cs.CustomerSupplierId != 0)
            {
                context.Entry(cs).State = EntityState.Modified;
            }
            else
            {
                context.Customer_Supplier.Add(cs);
            }

        }
        catch (DbEntityValidationException dbEx)
        {
            foreach (var validationErrors in dbEx.EntityValidationErrors)
            {
                foreach (var validationError in validationErrors.ValidationErrors)
                {
                    Trace.TraceInformation("Class: {0}, Property: {1}, Error: {2}", validationErrors.Entry.Entity.GetType().FullName,
                                  validationError.PropertyName, validationError.ErrorMessage);
                }
            }
        }
        return context.SaveChanges();
    }