我对MVC很新,并尝试使用我的第一个扩展方法来格式化电话号码。我之前在视图中有所有逻辑,我正在学习击败MVC的原理。因此,对于代码重用和遵循MVC标准实践,我正在尝试执行此扩展方法。
namespace Data.CustomHtmlHelper
{
public static class CustomerHelperHelper
{
public static string PhoneNumber(this HtmlHelper helper, string value)
{
value = new System.Text.RegularExpressions.Regex(@"\D")
.Replace(value, string.Empty);
value = value.TrimStart('1');
if (value.Length == 7)
return Convert.ToInt64(value).ToString("###-####");
if (value.Length == 10)
return Convert.ToInt64(value).ToString("###-###-####");
if (value.Length > 10)
return Convert.ToInt64(value)
.ToString("###-###-#### " + new String('#', (value.Length - 10)));
return value;
}
}
}
这个例子给我一个错误信息"该值不能为空"。
尝试编号2:
public static string PhoneNumber(this HtmlHelper helper, string value)
{
if (!String.IsNullOrEmpty(value))
{
if (value != null && value.Length == 7)
return Convert.ToInt64(value).ToString("###-####");
if (value != null && value.Length == 10)
return Convert.ToInt64(value).ToString("###-###-####");
if (value != null && value.Length > 10)
return Convert.ToInt64(value)
.ToString("###-###-#### " + new String('#', (value.Length - 10)));
}
else if (String.IsNullOrWhiteSpace(value))
{
return Convert.ToInt64(value).ToString("###-####");
}
return value;
}
这将不会在“查看所有内容”中返回正确的电话号码值" - "。
尝试编号3:
public static string PhoneNumber(this HtmlHelper helper, string value)
{
if (value != null && value.Length > 6)
return "Invalid Phone Number";
if (value != null && value.Length == 7)
return Convert.ToInt64(value).ToString("###-####");
if (value != null && value.Length == 10)
return Convert.ToInt64(value).ToString("###-###-####");
if (value != null && value.Length > 10)
return Convert.ToInt64(value)
.ToString("###-###-#### " + new String('#', (value.Length - 10)));
return value;
}
这不会在视图中返回任何内容。
为所有人使用相同的视图。
@using Data.CustomHtmlHelper
<div class="col-md-4">
@Html.PhoneNumber(Model.phone_no)
</div>