ビューからコントローラーインスタンスにアクセスするにはどうすればよいですか?例えば。 HomeController
があり、私のIndex
ビューが返されます。そのビューの内部で、ビューを作成したHomeController
インスタンスにアクセスしたいとします。それ、どうやったら出来るの?ASP.NET MVC:ビューからコントローラーインスタンスにアクセス
答えて
ViewContext.Controller、それをキャストする必要があります。
<% var homeController = ViewContext.Controller as HomeController; %>
これはポストAsp.Net MVC: How do I get virtual url for the current controller/view?でいくつかの余分なしわで覆われています。
EDIT:人間が可能な限り視界から機能を引き離すために、Mark Seemannの提案に肉を追加することです。コントローラーを使用してレンダリングされたページのマークアップを判断する場合は、代わりにHtml.RenderAction(actionName, controllerName)
メソッドを使用します。この呼び出しは、アクションが別のリクエストであるかのように起動し、そのビューをメインページの一部として含めます。
このアプローチは、リダイレクトされたアクションメソッドがプレゼンテーションルールに関してすべての重労働を行う可能性があるため、分離の徹底に役立ちます。親ビュー内で正しく動作するには、パーシャルビューを返す必要があります。
私の意見では、ビューがコントローラについて知る必要がないデザインを考慮する必要があります。コントローラーは要求を処理し、モデルを作成し、そのモデルをビューに表示します。その時点で、コントローラの作業は完了です。
私は、Viewがコントローラについて何かを知る必要がある場合、それが設計上の欠陥であると考えています。あなたが達成しようとしていることをもっと分かち合うことができますか?
よく設計されたフレームワーク(MVCフレームワークなど)を扱う場合、フレームワークがあなたと戦っているように感じたら、間違った方法で作業することがよくあります。これは私にはたくさん起こりました。そして、私が実際に達成しようとしていることは、新しい歩みにつながります。
+1。ユーティリティクラスが必要な場合は、通常、コントローラのライフサイクルが「戻る」で終わる必要があるため、ViewModelまたは完全に別のエンティティに移動する必要があります。 –
Mark:あなたの議論に自分の投稿に少し追加しました。 +1 –
+1も私から。私はこれについて考えました。私がやっていることは、ASP.NET MVCの通常のスタータープロジェクトからのLogOnUserControlに似た部分的なビューがあることです。ユーザー名を表示します(しかし、ページコンテキスト/ IPrincipalからのものではありません - カスタムです)。私のコントローラには既にユーザー名を提供できるサービスがあります。そのため、ビューで再インスタンス化するのではなく、コントローラからインスタンスを取得したいと思います。私はモデルを使用していません。なぜなら、定期的な戻りView()を利用して問題に遭遇したくないからです(これは共有されているので、VMベースクラスなどが必要です)。 – Alex
- 1. ASP.net MVC - ビューはどのようにモデルにアクセスしますか?
- 2. asp.net mvcルートからビューを返す
- 3. ASP.net MVCのビュー
- 4. はasp.net MVCビュー
- 5. ASP.NET MVCビュー内のViewModelプロパティにアクセスするには?
- 6. asp.Net MVCビューからangularJS 2ビュー/コンポーネントへの移行
- 7. ASP.NET MVC 4 - ビューにID
- 8. 部分ビューasp.net mvc
- 9. ASP.NET MVCビューとjQuery.data()
- 10. フォームAsp.Net MVCビューで
- 11. Asp.Net MVCコントローラとビュー
- 12. asp.net mvc - ビューとコントローラ
- 13. C#ASP.Net MVCビュー号
- 14. ASP.NET MVC動的ビュー
- 15. IoCとASP.NET MVCビュー
- 16. アクセスASP.net MVCユニットテスト
- 17. ASP.NET MVCのビューからHTML文字列からPDFをダウンロード
- 18. ビューからコントローラにASP.NET MVCモデルを渡す
- 19. ASP.Net MVCのビューからコントローラにクラスの値を渡す方法
- 20. ASP.net Core MVC 2.0 FormEditModelをビューからコントローラに渡す
- 21. コントローラからasp.net mvcのビューにデータを返す
- 22. ASP.NET MVC 3のパラメータをビューからjQueryに渡します
- 23. ASP.NET MVCビューからSQL Serverパラメータにテキストボックス値を渡す方法
- 24. asp.netから次のレコードに移動MVC詳細ビュー
- 25. ASP.NET MVC 5のビューからコントローラにオブジェクト全体を渡す
- 26. ASP.Net MVCでViewBagでコントローラからビューにメッセージを渡す
- 27. ビューからpdfファイルにデータを引き出す方法asp.net mvc
- 28. ASP.NET MVCのビューからグリッドのデータをコントローラにポストする
- 29. ASP.net MVC5コントローラからビューにボタンにアクセスするには、
- 30. ASP.NET MVC - ActionFilterのコントローラプロパティにアクセス
どのようにこれに対する答えが「あなたはしていない」(c.f. https://stackoverflow.com/q/9562214/1739000)ではないのですか? –