0
如何防止context.savechangs从所需的属性ModelState.Remove并不妨碍context.savechangs从抛出错误
我有这样的代码编写消息
引发错误,这是控制器端的方法
public string DraftMessage(message draftMessage, string status, HttpPostedFileBase[] files = null)
{
ModelState.Remove("Title");
ModelState.Remove("Body");
if (ModelState.IsValid)
{
return new MessageActions().DraftMessage(draftMessage, status);
}
return "validation error";
}
,这是该模型方法
public string DraftMessage(message draftMessage, string status)
{
if (status == "new")
{
draftMessage = new message();
draftMessage.Status = "DR";
draftMessage.DateOfCreation = DateTime.UtcNow;
draftMessage.C_From = CurrentUser.Id;
context.messages.Add(draftMessage);
draftMessage.To = new int[2];
foreach (int receiverId in draftMessage.To)
{
if (context.users.Any(user => user.user_id == receiverId && (user.DepartmentOfTheUser.Company == CurrentUser.Company || user.DepartmentOfTheUser.CompanyOfTheDepartment.CompanyCustomers.Any(cus => cus.customer_of == CurrentUser.Company) || user.DepartmentOfTheUser.CompanyOfTheDepartment.CompanySuppliers.Any(supp => supp.supplier_of == CurrentUser.Company))))
{
context.MessageReceiversConnectors.Add(new MessageReceiversConnector() { MessageId = draftMessage.id, ReceiverId = receiverId, MessageStatus = "DR" });
}
}
}
context.SaveChanges();
return "draft";
}
我用的EntityFramework创建同一实体交换数据,我用把用于验证所需要的属性,看看下面
[Required(ErrorMessage="This field is required")]
public int[] To { get; set; }
[Required(ErrorMessage = "This field is required")]
public string Title { get; set; }
[Required(ErrorMessage = "This field is required")]
public string Body { get; set; }
ModelState.Remove代码工作在控制器端,但是当我到达它在context.savechanges上抛出异常的模型。
有什么办法可以解决这个问题。
您应该改用视图模型。 –
是否有其他方法,这将需要很长时间来更改我的代码以适应新的更改 – Haidar