模型丢失 getter 的私有字段值
Model losing private field value for getter
我正在使用 ASP.Net MVC,并且有一个模型使用 getters 和设置器来格式化电话号码。
出于某种原因,getter 总是 returns null,调试时检查显示私有成员确实为 null。尽管在填充模型时私人成员已成功设置为格式化数字。
该项目正在使用 entity framework 和一个设置一些测试模型属性的 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; }
}
你遇到的问题是,如果你的输入值没有空格,你就永远不会真正存储它。只需在末尾添加一个else
:
if (value.IndexOf(" ") < 0)
{
//snip
}
else
{
this.telephoneNumber = value;
}
我还建议您通过对私有变量使用 _variableName
来遵循 C# 最佳实践:
private string _telephoneNumber;
private string _faxNumber;
我正在使用 ASP.Net MVC,并且有一个模型使用 getters 和设置器来格式化电话号码。
出于某种原因,getter 总是 returns null,调试时检查显示私有成员确实为 null。尽管在填充模型时私人成员已成功设置为格式化数字。
该项目正在使用 entity framework 和一个设置一些测试模型属性的 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; }
}
你遇到的问题是,如果你的输入值没有空格,你就永远不会真正存储它。只需在末尾添加一个else
:
if (value.IndexOf(" ") < 0)
{
//snip
}
else
{
this.telephoneNumber = value;
}
我还建议您通过对私有变量使用 _variableName
来遵循 C# 最佳实践:
private string _telephoneNumber;
private string _faxNumber;