問題タブ [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.
asp.net-mvc - View.Render メソッドを使用して MVC ビューを文字列に変換する単体テスト方法
MVCビューを文字列に変換するメソッドと、文字列を返すかどうかを確認するテストメソッドを作成しました。
もちろんWebでも動作しますが、NUnitでテストを実行すると、メソッドがView.Renderを呼び出そうとすると、System.WebでNullReferenceExceptionがスローされます。
スタックトレースは次のとおりです。
レンダリング方法のコード:
そして、コントローラー コンテキスト モックを使用してメソッドをテストします。
原因はそれであり、NULLであることをHEREで読みました。_virtualPath
HttpRuntime.AppDomainAppVirtualPathString int System.Web.VirtualPathString
単体テスト用に設定することは可能ですか?
.net - Razor ビューを文字列にレンダリングする => 定期的なタスクから呼び出されたときに ControllerContext が null になる
ASP.NET MVC3
を使用しています。.cshtml
ビューがあり、それを文字列化してメール本文に組み込みたいと考えています。
これが私が使用する方法です:
ActionResult
Ajax 呼び出しから呼び出されるメソッドからこのメソッドを呼び出すと、これは完全に機能します。
しかし、私は異常な状況に直面しています:
私のGlobal.asax
ファイルには、10 分ごとに呼び出されるメソッドがあり、その目的は、過去 10 分間にデータベースに特別なレコードが作成されたかどうかを確認し、作成された場合はメールを送信することです。もちろん、メール本文はこの文字列化されたビューです。
ここに私のコードの一部があります:このメソッドは、この投稿に非常に触発されています
このSendEmail()
メソッドは、電子メールの本文を作成し、ビューを取得して、それを HTML 文字列に入れて送信する必要があります。
ここで、RenderRazorViewToString()
(メソッドの本体はこの投稿の上部に記載されています) 次の行で失敗します:
ControllerContext を null にすることはできません
なぜ、この場合のみControllerContext
がなのnull
ですか? 私はこの投稿を読みましたが、それを正しく理解していれば、これはコントローラーの書き込みを手動でインスタンス化したためです。
しかし、それ以外の方法で続行する方法がわかりません...
どんな助けでも大歓迎です。
ありがとうございました
c# - 単体テスト c# の ControllerContext で DisplayMode をモックする方法
controllerContext をパラメーターとして使用して、第 3 部ライブラリ「Rotativa」に基づいて PDF ドキュメントを生成するアクションをコントローラーでテストしたいと考えています。
アクション(関数)の実装は次のとおりです。
そして、これが私が単体テストを機能させようとしている方法です:
テスト名: 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: オブジェクト参照が設定されていませんオブジェクトのインスタンス。
助けや提案、ありがとう。
c# - AuthorizeAttribute Mvc Core Web Api で Controller インスタンスを取得する
以下のクラスを使用して、API メソッド要求を制御し、メソッドで一般的に使用する BaseController クラスのいくつかのプロパティをセットアップしました。これは Asp.Net Mvc Web Api からのものです
しかし、Asp.Net Mvc Core Api で同じ構造体を実装しようとすると、初期化されたコントローラーのインスタンスに到達できませんでした。そのインスタンスを取得する方法はありますか。
Microsoft.AspNetCore.Authorization を使用します。