web-dev-qa-db-ja.com

モデルのMVC5Razor NullReferenceException

何らかの理由で、モデルにアクセスしようとすると、常にNullReferenceExceptionが発生します。

これが私のコントローラからのコードです:

public async Task<ActionResult> Bar(string fooSlug, int barId)
{
    var foo = await mediaService.GetFoo(fooSlug);
    var bar = await barService.GetBarFromFooByTitleId(foo.TitleId, barId);
    var viewModel = new ViewModels.BarViewModel(foo, bar);
    return View(viewModel);
}

ViewModelからのコード:

public class BarViewModel
{
    public Models.Sub.FooDetails Foo{ get; set; }
    public Models.Sub.BarDetails Bar { get; set; }

    public BarViewModel(Models.Sub.FooDetails foo, Models.Sub.BarDetails bar) 
    {
        this.Foo = foo;
        this.Bar = bar;
    }
}

そして私の見解:

@model FooBar.ViewModels.BarViewModel

@{
    ViewBag.Title = "Bar";
}

<h2>@Model.Bar.Name</h2>

H2タグ内で使用しようとすると、NullReferenceExceptionが返され続けます。デバッグしましたが、.Nameプロパティの値は正しいのですが、続行を押すとエラーがスローされます。

誰かがこの問題の解決策を持っていますか?

23
sgtfrankieboy

コンパイラが、かみそりビューで特定の種類のエラーがある正確な行を指すことができない場合があります。これは、スタックトレースまたはどこかに行番号を保持できなかったことが原因である可能性があります。 Null参照例外があり、Url.Contentでnullが渡された場合のこのケースを見つけました。

したがって、スタックトレースによって示される行でエラーが発生しなかった場合、かみそりビューで次のC#ステートメントを確認すると役立ちます。

45
Sandeep Kumar