2009-06-08 92 views
1
在ASP.NET應用程序(MVC)中的

我有一個foreach循環,循環遍歷可能包含或不包含某個元素的結構:Asp.net:在foreach循環中處理null

  <% foreach (XElement segnalazione in ((XElement)ViewData["collezioneSegnalazioni"]).Elements("dossier")) { %> 

      <tr> 

       <td><%= Html.Encode(segnalazione.Element("NUM_DOSSIER").Value) %></td> 
       <td><%= Html.Encode(segnalazione.Element("ANAG_RAGSOC_CGN").Value) %></td> 
       <td><%= Html.Encode(segnalazione.Element("ID_RIFATT_SEGN0").Value) %></td> 
       <td><%= Html.Encode(segnalazione.Element("FLG_STATUS").Value) %></td> 
       <td><%= Html.Encode(segnalazione.Element("DT_ACCADIMENTO").Value)%></td> 
       <td><%= Html.Encode(segnalazione.Element("COD_RAMO_LUNA").Value) %></td> 
      </tr> 
     <% } %> 

現在,當Element(「DT_ACCADIMENTO」)不是時,我得到NullReferenceException在XElement中設置。有一個快速的方法來處理這個?我嘗試使用

<td><%= Html.Encode(segnalazione.Element("DT_ACCADIMENTO").Value ?? "")%></td> 

,但它不起作用,我想,它檢查是否爲null,我對字段本身有問題。 任何幫助appxiated

回答

3
<td><%= Html.Encode((string)segnalazione.Element("DT_ACCADIMENTO") ?? "")%></td> 
+0

明確運營商的的XElement串鑄(http://msdn.microsoft.com/en-us/library/bb155263.aspx) – Joseph 2009-06-08 13:17:46

1

嘗試使用:

segnalazione.Element("NUM_DOSSIER") == null ? "" : segnalazione.Element("NUM_DOSSIER").Value 
+0

你查詢XElement對象兩次,如果有很多子元素,這可能會損害性能,我認爲它比LINQ to XML中的普通方法沒有任何優勢。你不覺得嗎? – 2009-06-08 12:44:38

+0

你是絕對正確的,我認爲你的解決方案更好。不知道爲什麼我得到所有的選票;-) – 2009-06-08 12:59:56

+0

Mehrdad的解決方案不編碼Value屬性。當toString被調用時,元素是否輸出它的Value屬性?如果沒有,那麼我會認爲這將是一個不正確的實施。 – Joseph 2009-06-08 13:08:10