0

オブジェクト参照がオブジェクトのインスタンスに設定されていないというエラーが発生しています複数のことを試しましたが、そのエラーが発生し続けます。エラーはこのコード行で発生しています

  @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) 場合、すべてが完全に機能します。この問題を解決するにはどうすればよいですか

4

1 に答える 1

0

で一致するものがない場合registrationIDEnumerable.FirstOrDefaultは を返しますnull。そのprofilesため、 inpublic ActionResult detail(int id)は null になり、null結果としてビューに渡されます。

が nullModel.profile.photoの場合は にアクセスできません。Model.profilenull チェックを追加してみてください:

@if(Model.profile != null && 
    !string.IsNullOrWhiteSpace(Model.profile.photo))
{
    //... 
}
else {
   <p>This user does not have a profile</p>
}
于 2012-12-19T04:59:23.390 に答える