我在asp.net转发器控件中遇到空引用问题。
转发器遍历具有引用属性的类的IEnumerable<T>
。
我有以下课程:
public class SubTarget
{
public int Id { get; set; }
public string Name { get; set; }
public int? ModelId { get; set; }
public virtual Model Model { get; set; }
}
public class Model
{
public int Id { get; set; }
public string Name { get; set; }
public Model()
{
SubTargetTypes = new HashSet<SubTargetType>();
}
}
转发器控制:
<asp:Repeater
runat="server" ItemType="SubTarget" SelectMethod="GetSubTargets">
<ItemTemplate>
<div>
<table>
<tr>
<td><%# Item.SubTargetType.Name %></td>
<td><%# Item.Model.Name %></td>
</tr>
</table>
</div>
</ItemTemplate>
</asp:Repeater>
问题是:Model
上的SubTarget
属性是可选的。因此,当ModelId
为空时,Model
上的属性引用显然无法找到。
仅使用ModelId
调用时,转发器控件正确处理空<%# Item.Model %>
并将空格留空,但在调用<%# Item.Model.Name %>
时,我得到空引用异常。
如果没有设置外键时如何只显示空格?
答案 0 :(得分:1)
试试这个:
<td><%# Item.Model !=null ? Item.Model.Name : string.Empty %></td>
我希望能帮助你。 :)