我正在使用ASP.Net MVC,并且有一个使用getter和setter格式化电话号码的模型。
由于某种原因,getter总是返回null,并且检查调试时是否显示私有成员确实为null。尽管私有成员在填充模型时已成功设置为格式化数字。
项目正在使用实体框架和dbInitializer设置一些测试模型属性(项目仍在开发中),我想这可能会导致问题,但数据库仍然使用格式化的数字填充。
以下是我的模型代码,谁能看到我出错的地方?
public class ContactDetails
{
private string telephoneNumber;
private string faxNumber;
[DisplayName("Telephone number")]
public string TelephoneNumber
{
get
{
return this.telephoneNumber;
}
set
{
// Format the telephone number
// If not already formatted (doesn't have spaces)
if (value.IndexOf(" ") < 0)
{
// Format a mobile number
if (value.StartsWith("07"))
{
this.telephoneNumber = value.Substring(0, 5) + " " + value.Substring(5, 3) + " " + value.Substring(8, 3);
} else
{
// Format a landline
this.telephoneNumber = value.Substring(0, 4) + " " + value.Substring(4, 3) + " " + value.Substring(7, 3);
}
}
}
}
[DisplayName("Fax number")]
public string FaxNumber { get; set; }
[DisplayName("Email address")]
public string EmailAddress { get; set; }
}
答案 0 :(得分:0)
您遇到的问题是,如果您的输入值没有空格,您实际上从未存储过它。只需在末尾添加else
:
if (value.IndexOf(" ") < 0)
{
//snip
}
else
{
this.telephoneNumber = value;
}
我还建议您使用_variableName
作为私有变量来遵循C#最佳做法:
private string _telephoneNumber;
private string _faxNumber;