C# 验证一个或多个实体失败-保存更改部分
当代码转到SaveChanges部分时,我遇到了这个错误。在这里,我将验证文本框 模型 看法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)。这是堆栈溢出中的输入错误还是
问题到底是什么?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();
}