如何在具有外键关系的asp.net Repeater项中处理空引用

时间:2015-04-04 10:40:29

标签: c# asp.net entity-framework webforms

我在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 %>时,我得到空引用异常。

如果没有设置外键时如何只显示空格?

1 个答案:

答案 0 :(得分:1)

试试这个:

 <td><%# Item.Model !=null ? Item.Model.Name : string.Empty %></td>

我希望能帮助你。 :)