0

我有这个模型类:

public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }

    public DbSet<ForeignExpression> learnedexpressions { get; set; }
}

我在控制器中创建数据库集:

int userID = (int)Membership.GetUser().ProviderUserKey;
model.ForeignExpressions=db.UserProfiles.Find(userID).learnedexpressions;

然后在视图中,我尝试将它们写出来:

@foreach (var exp in Model.ForeignExpressions.OrderByDescending(m => m.dateAdded).Take(@numOfExpressions).ToList().OrderBy(m => m.dateAdded))
{
<tr>
<td> @exp.expression</td>
<td> @exp.meaning</td>
<td> "@exp.context"</td>
<td> @exp.dateAdded</td>
</tr>  
}

但是,Model.ForeignExpressions 为空,所以我得到了 foreach 的运行时错误(值不能为空)。我怀疑是因为我还没有当前用户的 ForeignExpression,所以learnedexpressions 的值为null。我是正确的,处理这个问题的最佳方法是什么?我应该在视图、控制器还是模型中修复它?

4

2 回答 2

1

在尝试使用它之前测试是否ForeignExpressions是:null

@if (Model.ForeignExpressions != null)
{
 // foreach
}
于 2013-10-11T22:23:58.287 回答
1

使learnedespressions属性为虚拟,以便允许延迟加载集合并将属性的类型从更改DbSet<T>ICollection<T>

于 2013-10-11T21:10:05.310 回答