2013-03-11 83 views
2

的異常在我的一把umbraco網站我有這樣的值=「p.Value」扔型「System.NullReferenceException」

var p = currentNode.GetProperty("ucc") as Property; 
if (p != null && !string.IsNullOrEmpty(p.Value.Trim())) 
mailCC = p.Value; 

一個代碼,但它總是拋出這樣

Value = 'p.Value' threw an exception of type 'System.NullReferenceException' 
錯誤

注:我敢肯定,P.Value是記空 enter image description here

+0

什麼* * * p.Value'?那財產的代碼是什麼?評估'p.Value'是否有可能拋出異常?並且是你的屏幕截圖中突出顯示的行出現異常的行嗎? – 2013-03-11 12:39:52

+0

是的這是錯誤的是在評估P.Value和它的umbraco。我認爲有些人知道umbraco只能解決這個問題。 – Athul 2013-03-11 12:45:01

+0

'p.Value'在您發佈的代碼中評估兩次。拋出異常在哪一行? Umbraco是開源的; *任何人*都可以搞清楚。另外:p.Value有什麼價值? – 2013-03-11 13:16:26

回答

3

調用Trim()方法上p.Value WH它是空的拋出錯誤。在你的代碼中,這是在string.IsNullOrEmpty執行檢查之前發生的。

將表達式修改爲以下內容應該修復它。

代碼:

var p = currentNode.GetProperty("ucc") as Property; 
if (p != null && !string.IsNullOrWhiteSpace(p.Value)) 
    mailCC = p.Value 

參考:

String.IsNullOrWhiteSpace:表示指定的字符串是否爲空,空的,或僅包含空白字符。

0

+1給Goran Mottram指出原因並給出正確的建議。在進行任何方法調用之前,您應該始終檢查null。