【发布时间】:2016-11-07 07:58:22
【问题描述】:
我正在尝试将客户电子邮件和电话号码作为加密字符串保存到数据库中。显然,它在实体框架验证上失败,说不是有效的电子邮件地址或电话号码。在不影响字段验证的情况下处理这种情况的最佳方法是什么?试图用谷歌搜索,但没有找到任何地方。
模型类字段:
[Required]
[StringLength(256)]
[EmailAddress]
public string Email { get; set; }
[StringLength(256)]
public string Address { get; set; }
[Required]
[Phone]
[Display(Name = "Phone")]
public string PhoneNumber { get; set; }
控制器动作方法:
if (ModelState.IsValid)
{
try
{
customer.CustomerCode = getNewCode();
customer.PhoneNumber = CryptorEngine.Encrypt(customer.PhoneNumber, true);
customer.Email = CryptorEngine.Encrypt(customer.Email, true);
customer.Address = CryptorEngine.Encrypt(customer.Address, true);
customer.AddedBy = User.Identity.Name;
customer.AddedAt = DateTime.Now;
db.Customers.Add(customer);
db.SaveChanges();
}
catch (DbEntityValidationException e)
{
foreach (var eve in e.EntityValidationErrors)
{
System.Diagnostics.Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
eve.Entry.Entity.GetType().Name, eve.Entry.State);
foreach (var ve in eve.ValidationErrors)
{
System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
ve.PropertyName, ve.ErrorMessage);
}
}
throw;
}
return RedirectToAction("Index");
}
输出窗口出错:
Exception thrown:
'System.Data.Entity.Validation.DbEntityValidationException' in EntityFramework.dll
Entity of type "Customer" in state "Added" has the following validation errors:
- Property: "Email", Error: "The Email field is not a valid e-mail address."
- Property: "PhoneNumber", Error: "The Phone field is not a valid phone number."
任何帮助将不胜感激。
【问题讨论】:
-
删除[电话]和[电子邮件地址]
-
谢谢,将属性移动到视图模型
标签: c# asp.net-mvc entity-framework validation encryption