我希望电话号码的字段最多可包含10位数字。我放置了[stringlength]属性,但仍然无法获得所需的结果。感谢那些可以帮助我的人。
另一方面,是否有可能拆分电话号码,以便区号和剩余数字通过存储过程分别发送到数据库?
模型:
public class Pharmacy
{
[StringLength(10,MinimumLength=10)]
public string PhoneNumber
{
get
{
return _phoneNumber;
}
set
{
Regex regexObj = new Regex(@"[^\d]");
_phoneNumber = regexObj.Replace(value, "");
_phoneNumber = Regex.Replace(_phoneNumber, @"(\d{3})(\d{3})(\d{4})", "($1) $2-$3");
}
}
}
表单字段:
<label id="lblPhoneNumber">Phone Number</label>
<input style="margin: 5px; " type=text name="txtPhoneNumber" id="txtPhoneNumber" value="@Model.Pharmacy.PhoneNumber" />
答案 0 :(得分:1)
如果您正在使用ASP.NET MVC,为什么要使用HTML标记作为输入?你应该使用Razor标签。
@Html.LabelFor(model => model.PhoneNumber, new { id = "lblPhoneNumber" })
@Html.TextBoxFor(model => model.PhoneNumber, new { id = "txtPhoneNumber", style="margin: 5px;", name="txtPhoneNumber", @Value = Model.Pharmacy.PhoneNumber })
@Html.ValidationFor(model => model.PhoneNumber, "", new { @class = "text-danger" })
另外,请确保您具有不显眼的J NuGet UnobtrusiveJS进行验证。使用数据注释,其他一切似乎都很好。 [StringLength]
的未命名参数是最大长度,而您需要指定最小长度。您可能还想让用户知道错误,因此您也需要一条错误消息[StringLength(10, MinimumLength=10, ErrorMessage="* Must be 10 digits")]
问题的第二部分
另一方面,是否有可能拆分电话号码,以便区号和剩余数字通过存储过程分别发送到数据库?
是的,使用你已经在做的RegEx捕获组:)。
RegEx regEx = new Regex(@"(\d{3})(\d{3})(\d{4})")
Matches matches = regex.Matches(value);
// matches[0] contains area code
// matches[1] contains first 3 digits
// matches[2] contains final 4 digits