2009-06-08 90 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