問題タブ [controllercontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1682 参照

asp.net-mvc - View.Render メソッドを使用して MVC ビューを文字列に変換する単体テスト方法

MVCビューを文字列に変換するメソッドと、文字列を返すかどうかを確認するテストメソッドを作成しました。

もちろんWebでも動作しますが、NUnitでテストを実行すると、メソッドがView.Renderを呼び出そうとすると、System.WebでNullReferenceExceptionがスローされます。

スタックトレースは次のとおりです。

レンダリング方法のコード:

そして、コントローラー コンテキスト モックを使用してメソッドをテストします。

原因はそれであり、NULLであることをHEREで読みました。_virtualPathHttpRuntime.AppDomainAppVirtualPathString int System.Web.VirtualPathString

単体テスト用に設定することは可能ですか?

0 投票する
3 に答える
2174 参照

.net - Razor ビューを文字列にレンダリングする => 定期的なタスクから呼び出されたときに ControllerContext が null になる

ASP.NET MVC3
を使用しています。.cshtmlビューがあり、それを文字列化してメール本文に組み込みたいと考えています。
これが私が使用する方法です:

ActionResultAjax 呼び出しから呼び出されるメソッドからこのメソッドを呼び出すと、これは完全に機能します。

しかし、私は異常な状況に直面しています:

私のGlobal.asaxファイルには、10 分ごとに呼び出されるメソッドがあり、その目的は、過去 10 分間にデータベースに特別なレコードが作成されたかどうかを確認し、作成された場合はメールを送信することです。もちろん、メール本文はこの文字列化されたビューです。

ここに私のコードの一部があります:このメソッドは、この投稿に非常に触発されています

このSendEmail()メソッドは、電子メールの本文を作成し、ビューを取得して、それを HTML 文字列に入れて送信する必要があります。

ここで、RenderRazorViewToString()(メソッドの本体はこの投稿の上部に記載されています) 次の行で失敗します:

ControllerContext を null にすることはできません

なぜ、この場合のみControllerContextがなのnullですか? 私はこの投稿を読みましたが、それを正しく理解していれば、これはコントローラーの書き込みを手動でインスタンス化したためです。

しかし、それ以外の方法で続行する方法がわかりません...

どんな助けでも歓迎です。
ありがとうございました

0 投票する
2 に答える
991 参照

c# - 単体テスト c# の ControllerContext で DisplayMode をモックする方法

controllerContext をパラメーターとして使用して、第 3 部ライブラリ「Rotativa」に基づいて PDF ドキュメントを生成するアクションをコントローラーでテストしたいと考えています。
アクション(関数)の実装は次のとおりです。

そして、これが私が単体テストを機能させようとしている方法です:

  • コンストラクタ

    /li>
  • テスト機能

    テストを実行すると、次のエラーが発生します。 ここに画像の説明を入力

テスト名: DetailsPrint_shouldPrint テスト フルネーム: OPSReviewTest._2A1ControllerTest.DetailsPrint_shouldPrint テスト ソース: C:\inetpub\wwwroot\OpsReview\OPSReviewTest\Controllers\Api_2A1ControllerTest.cs: 46 行目 テスト結果: 失敗 テスト期間: 0:04:39,3039007 結果 StackTrace :
System.Web.WebPages.DisplayModeProvider.GetDisplayMode(HttpContextBase コンテキスト) で System.Web.Mvc.ControllerContext.get_DisplayMode() 結果メッセージ: テスト メソッド OPSReviewTest._2A1ControllerTest.DetailsPrint_shouldPrint が例外をスローしました: System.NullReferenceException: オブジェクト参照が設定されていませんオブジェクトのインスタンス。

助けや提案、ありがとう。

0 投票する
1 に答える
3144 参照

c# - AuthorizeAttribute Mvc Core Web Api で Controller インスタンスを取得する

以下のクラスを使用して、API メソッド要求を制御し、メソッドで一般的に使用する BaseController クラスのいくつかのプロパティをセットアップしました。これは Asp.Net Mvc Web Api からのものです

しかし、Asp.Net Mvc Core Api で同じ構造体を実装しようとすると、初期化されたコントローラーのインスタンスに到達できませんでした。そのインスタンスを取得する方法はありますか。

Microsoft.AspNetCore.Authorization を使用します。