0

他の誰かの ASP.Net MVC4 コントローラー アクション メソッドの単体テストを行っています。その最後の行は次のとおりです。

return this.View("ConfirmAddress", addressModel);

nullこれは私の単体テストで返されます。Controller.Viewのドキュメントには、最初のパラメーターはビュー名であると書かれていますが、このメソッドにステップインしてnullが返される理由を調べることはできません。AConfirmAddress.cshtmlは Views フォルダーに存在しますがConfirmAddress(AddressModel am)、コントローラーにもアクションがあります。

誰かがこれから何をすべきかを知ることができますRedirectToActionか?

4

2 に答える 2

2

が呼び出されたときに何が起こるかを確認するために、クラスの公式ソース コードをController調べました。View結局のところ、さまざまなViewメソッドのオーバーロードはすべて、最終的に次のメソッドを呼び出します。

protected internal virtual ViewResult View(string viewName, string masterName, object model)
{
    if (model != null)
    {
        ViewData.Model = model;
    }

    return new ViewResult
    {
        ViewName = viewName,
        MasterName = masterName,
        ViewData = ViewData,
        TempData = TempData,
        ViewEngineCollection = ViewEngineCollection
     };
}

このメソッド (および他のすべてのオーバーロード) は、例外をスローする可能性がありますが、決してNULLを返しません。ただし、これは仮想です。つまり、呼び出しているコードがカスタム実装でそれをオーバーライドし、NULLを返す可能性があります。Viewメソッドがどこかでオーバーライドされているかどうかを確認できますか?

于 2013-04-11T14:11:39.377 に答える
1

View メソッドがオーバーライドされている可能性があります。this数量詞を削除してみてください。

return View("ConfirmAddress", addressModel);
于 2013-04-11T14:23:37.307 に答える