2017-03-17 54 views
0

我使用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

您遇到的問題是如果您的輸入值沒有空格,那麼您從來沒有真正存儲它。只需添加一個else到最後:

if (value.IndexOf(" ") < 0) 
{ 
    //snip     
} 
else 
{ 
    this.telephoneNumber = value; 
} 

我也建議您遵循使用_variableName爲私有變量C#最佳實踐:

private string _telephoneNumber; 
private string _faxNumber; 
+0

謝謝,這並不能解決問題。不錯的地方。我將從現在開始使用下劃線。 –