我有一个MVC应用程序,要求用户提供电话号码。有一个面具,所以它总是看起来像"(567)222-0001。
当此电话号码保存在数据库中时,会使用这些括号和连字符保存。相反,我想将它保存到DB而没有括号和连字符,即原始电话号码。该应用程序使用LINQ。
感谢任何帮助。另外,我是MVC的新手,所以我有一个非常粗略的想法,在哪里查看代码。
答案 0 :(得分:3)
Regex.Replace(phoneNumber, @"[^0-9]", "")
在将它保存到数据库之前,它并不是真正的"至少不容易的地方。我已经看过其他框架,如RoR或Django,可以让你做一些事情,比如定义一个" pre_save"提供钩子的方法或类似方法,但实体框架没有类似的功能。
但是,您可以通过其他方式完成此操作。可能最简单的方法是在属性上定义自定义setter:
private string phoneNumber;
public string PhoneNumber
{
get { return phoneNumber; }
set { phoneNumber = !string.IsNullOrWhiteSpace(value) ? Regex.Replace(value, @"[^0-9]", "") : null; }
}
然后,每次为该属性设置一些值时,它将自动删除任何非数字字符。或者,您也可以在保存之前将其清理干净:
model.PhoneNumber = Regex.Replace(model.PhoneNumber, @"[^0-9]", "");
db.Entry(model).State = EntityState.Modified;
db.SaveChanges();