mvc3对象引用未设置为对象的实例,无法解决这个问题

时间:2012-12-19 04:53:08

标签: asp.net-mvc-3 object-reference

我收到错误对象引用没有设置为对象的实例我已经尝试过多次但是不断收到错误,错误发生在这行代码上

  @if(!string.IsNullOrWhiteSpace(Model.profile.photo))
    {

  @Html.DisplayFor(x => x.profile.firstname)  @Html.DisplayFor(x => x.profile.lastname)
  }
  else {

    <p>This user does not have a profile</p>
  }

@if(!string.IsNullOrWhiteSpace(Model.profile.photo))

我的视图包含2个模型

public class relist_profile
{
    public relisting relisting { get; set; }
    public profile profile { get; set; }

}

我的控制器是

public ActionResult detail(int id)
    {
        relisting relistings = db.relistings.Find(id);
        var profiles = (from s in db.profiles where s.registrationID == relistings.RegistrationID select s).FirstOrDefault();

        return View(new relist_profile {profile = profiles, relisting = relistings });
    }

发生的是当 var个人资料(s.registrationID!= relistings.RegistrationID)不匹配时,它会抛出错误,但如果有一个PROFILE,它匹配(TRUE)然后一切都很完美。 我该如何解决这个问题

1 个答案:

答案 0 :(得分:0)

如果registrationID没有匹配,Enumerable.FirstOrDefault会返回null。因此,profiles中的public ActionResult detail(int id)为空,然后null将传递到视图中。

Model.profile.photo为空时,您无法访问Model.profile。尝试添加空检查:

@if(Model.profile != null && 
    !string.IsNullOrWhiteSpace(Model.profile.photo))
{
    //... 
}
else {
   <p>This user does not have a profile</p>
}