首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MVC3中使用IoC提供自定义ModelMetadataProvider

在MVC3中使用IoC提供自定义ModelMetadataProvider
EN

Stack Overflow用户
提问于 2011-03-12 08:32:40
回答 2查看 1.4K关注 0票数 1

我目前正在使用下面的代码覆盖Global.asax文件中的默认ModelMetadataProvider

代码语言:javascript
复制
ModelMetadataProviders.Current = new RedSandMetadataProvider(ModelMetadataProviders.Current);

这个很好用。但是我想使用MVC3的IDependancyResolver特性,让IoC提供ModelMetadataProvider实现。我使用StructureMap来做这件事(只是用NuGet把它安装到项目中),但是由于某些原因,它的行为并不像预期的那样。

代码语言:javascript
复制
x.For<ModelMetadataProvider>().Use(new RedSandMetadataProvider(ModelMetadataProviders.Current));

我在RedSandMetadataProvider()的构造函数上设置了一个断点,但它被击中了。我还在自动添加的SmDependencyResolver.cs文件的GetServices()函数上设置了一个断点,以确保是IoC调用了我的构造函数,看起来一切正常,构造函数会在第二次页面加载时被调用,但它从未调用过我的MetadataProvider的GetMetadataForProperty()函数。现在我知道,当我在Global.asax中设置它时,它会被正确地调用,但每次我尝试使用IoC实现同样的结果时,我都会看到构造函数在我的类上被调用,仅此而已。我尝试将.Singleton()添加到该类型的StrctureMap注册中,这会导致我的构造函数被调用得更快,但在构造之后它仍然没有实际使用过该对象。

我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-22 00:11:38

我在另一个问题中解决了这个问题。Setting up DependancyResolver in MVC3 using StructureMap for ModelMetadataProvider & ModelValidatorProvider

如果您在这方面也遇到问题,请查看它。

票数 0
EN

Stack Overflow用户

发布于 2011-03-16 01:43:28

您需要实现IMvcServiceLocator并调用MvcServiceLocator.SetCurrent()来告诉MVC使用StructureMap:http://bradwilson.typepad.com/blog/2010/07/service-location-pt2-controllers.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5279894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档