我在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>
问题是:SubTarget
上的Model
属性是可选的。因此,当ModelId
为空时,显然找不到对Model
上属性的引用。当仅用<%# Item.Model %>
调用时,中继器控件正确地处理了空ModelId
,并将空间留空,但当调用<%# Item.Model.Name %>
时,我得到了一个空引用异常。
当没有设置外键时,如何只显示空格?
试试这个:
<td><%# Item.Model !=null ? Item.Model.Name : string.Empty %></td>
我希望能帮助你