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



我在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>

我希望能帮助你

最新更新