実際にカスタムprofileProviderを使用して情報を取得するASP.NET MVCサイトを開発しています(訪問した最後のページ、グリッドで表示するレコードの最大数、メール経由の通知など)カスタムデータベースに格納されている単一のユーザーに関連しています。 私はprofileProviderがeasely injectableではないので、このテクニックが嫌いです。プロファイルプロバイダが公開しているのと同じ機能を得る別の方法がありますか?私はおそらくasp.netモジュールを使用することが可能だと思うが、私は専門家ではない。asp.netのprofileproviderの代わりmvc
答えて
私は、プロバイダ(カスタムのProfileProviderも)がインスタンス化され、外部コード(System.Web.Configuration.ProvidersHelper)によって制御されるということを意味します。
依存性注入パターンでは、カスタムプロバイダが依存するオブジェクトはコントローラ(またはコンテナ)によって渡される必要があります。 Cfr。 Dependency Injection for Loose Coupling)。通常、コントローラはリポジトリ、datacontext、またはその他のオブジェクトを初期化し、コンストラクタまたはプロパティを介して渡します。しかし、それは 'コントローラ'がSystem.Web.Configurationに封印されているので、カスタムプロバイダでは不可能です。
私は質問よりも、ProvidersHelperがカスタムプロバイダをどのようにインスタンス化して制御するかに影響を与える方法があると思いますか?
正確には注射が容易ではありません。
あなたがコントローラーにそれを必要としないという意味であれば、データを表示するのに必要なユーザー情報のモデルを追加するアクションフィルターを作成します。
プロファイル情報を使用しているSystem.Web依存関係を望まない場合は、IProfileService
のようなアダプタインターフェイスを作成し、それをプロファイルプロバイダラッパーで実装します。
私が推測した2つのことのいずれかを意味するわけではない場合は、言語が少し不明であるため説明してください。
こんにちは、プロファイルプロバイダにはパラメータのないコンストラクタがあります。だから私はeasely従属注入プロバイダを使用することはできません、私は、プロファイルプロバイダのようなオブジェクトを作成するオブジェクトを作成する必要がありますhttpcontext、アイデアのユーザーですか? – tartafe
アクションフィルタではそれほど複雑ではありません。 ProfileProviderでDIを使用できない理由はないので、どのDependency Injectionサービスを使用していますか。 – smartcaveman
- 1. asp.netの代わりにasp.netの代わりにmvc
- 2. asp.netでのロールベースのプロファイルデータProfileProvider
- 3. PortalModuleBase.ControlPathの代わりのMVC?
- 4. MVCの代わりにZend
- 5. Asp.Net MVCのEntityフレームワークの代わりにDataTable
- 6. OnActionExecutingの代わりに何を使用しますか? ASP.NET MVC
- 7. ASP.NET MVC 4 ModelBindingの代わりに[]表記を使用
- 8. のC#、MVC、代わりに、テーブルのHTML
- 9. ASP.NET MVC - セッションを使用する代わりに
- 10. PHPのASP.NETのUserControlsの代わりに?
- 11. asp.net/VB.net:IDの代わりにControlTypeのFindControl
- 12. asp.netのモーダルポップアップエクステンダーの代わりに?
- 13. MVCページング:Getメソッドの代わりにポストメソッド
- 14. はMVC 2の代わりに、MVC1
- 15. ASP.NET MVC5 Webアプリケーションの代わりにMessageBox.Showの代わりになるもの
- 16. asp.net Ajax 4.0テンプレートの代わりに
- 17. リアルタイムアプリケーション - node.jsとsocket.ioの代わりにasp.net
- 18. AngularJsサービスの代わりにAsp.net WebApiメソッド
- 19. C#ASP.Net MVC RegularExpressionAttribute検証:負の表情ビハインドアサーション:レンダリング '<' の代わりに '<' の
- 20. なぜ私のasp.net mvcフォームはGETの代わりにPOSTingですか?
- 21. ASP.NET MVCエンティティフレームワークの代替
- 22. 代替asp.net MVCビューエンジン
- 23. ASP.NET MVC、EF:IEnumerableの代わりにアクションメソッドを返すようにする
- 24. asp.net mvc名前の代わりにGivenNameと姓を表示する方法
- 25. ASP.NET MVC 3:ローカリゼーションストアとしてリソースファイルの代わりにデータベースを使用
- 26. ASP.NET MVC。ビューページにidの代わりにtestを表示するには?
- 27. 代わりにASP.NETページをリフレッシュする
- 28. MVCパターンの実践(asp.net mvc) - ビューの代わりにアクションでURLを生成する
- 29. 、代わりの
- 30. Htmlの代わりにAjax ActionリンクMVCのアクションリンク
私はウィンザー[ここ](http://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html)を使って答えを見つけました。 – flip
こんにちはフィリップ、あなたの応答のおかげで、私はそれを試してみましょう。 – tartafe
私はいくつかの実装を見つけました。 [this](http://www.davidhayden.com/blog/dave/archive/2007/10/30/CreateCustomProfileProviderASPNET2UsingLINQToSQL.aspx)ServiceLocatorと[this](http://noahblu.wordpress.com/2009/)を使用しています02/19/custom-membershipprovider-using-repository-dependency-injection-pattern-magic /)StructureMap。私はあなたが他のすべてのDIのためにページとUserControlsを使用することができるので、私はASP.Netのための過剰なものだと思ういくつかの種類のIoCツールを使用します。私は同じ問題で苦労しているので、あなたがそれをどのように扱っているか教えてください。 – flip