首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这是否适合使用我的MVC 3 ModelBinder中的服务定位器模式?

这个问答内容涉及到了一些关于软件开发的概念,包括MVC模式、ModelBinder、服务定位器模式等。下面我将针对这个问答内容给出完善且全面的答案。

首先,MVC是一种软件设计模式,它将应用程序的逻辑分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在这个模式中,模型负责管理应用程序的数据和业务逻辑,视图负责显示数据,而控制器负责接收用户的输入并调用模型和视图来处理这些输入。

ModelBinder是ASP.NET MVC中的一个组件,它负责将HTTP请求中的数据绑定到控制器的方法参数中。通过使用ModelBinder,开发人员可以将HTTP请求中的数据转换为适当的数据类型,从而简化了开发过程。

服务定位器模式是一种设计模式,它用于在应用程序中动态地查找和使用服务。在这个模式中,服务定位器是一个中心化的对象,它负责管理应用程序中所有的服务。当应用程序需要使用某个服务时,它可以通过服务定位器来查找和获取该服务。

现在回到原来的问题:这是否适合使用我的MVC 3 ModelBinder中的服务定位器模式?

根据上面的解释,我们可以知道,MVC 3 ModelBinder是ASP.NET MVC中的一个组件,它负责将HTTP请求中的数据绑定到控制器的方法参数中。而服务定位器模式是一种设计模式,用于在应用程序中动态地查找和使用服务。因此,将服务定位器模式应用于MVC 3 ModelBinder中并不适合。

如果需要在ASP.NET MVC中实现动态查找和使用服务的功能,可以考虑使用依赖注入(Dependency Injection)这种设计模式。依赖注入是一种设计模式,用于将依赖对象注入到应用程序中的其他对象中。在ASP.NET MVC中,可以使用依赖注入容器(如Ninject、Unity等)来实现依赖注入。

总之,将服务定位器模式应用于MVC 3 ModelBinder中并不适合。如果需要在ASP.NET MVC中实现动态查找和使用服务的功能,可以考虑使用依赖注入这种设计模式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ModelBinder——ASP.NET MVC Model绑定核心

ModelBinder可以看成是整个Model绑定系统核心,我们先来认识这个重要组件。[本文已经同步到《How ASP.NET MVC Works?》...定义可以看出该特性不仅仅可以应用在参数上,也可以应用类型(接口、枚举、结构和类)上,意味我们既可以将它应用在Action方法某个参数上,也可以将它应用在某个参数类型上。...在一个通过Visual StudioASP.NET MVC项目模板创建空Web应用定义了如下几个类型,其中FooModelBinder和BarModelBinder是显现了IModelBinder...ModelBinderDictionary具有两个GetBinder方法重载用于获取针对某个数据类型ModelBinder,布尔类型参数fallbackToDefault表示在数据类型不存在时候是否采用默认...如果数据类型在该字典找不到,则选择使用通过_modelBinderProviders字段表示ModelBinderProvider列表进行ModelBinder提供。

2.3K100

WebAPI下的如何实现参数绑定

Using Model Binding: ModelBinding和MVC此概念是一致,更多内容见Here。...通过使用[FormBody]特性标示特定参数应该从body取值。 通过使用[ModelBinder]特性来标示参数或参数类型应该使用model bound方式。...[FromUri]是一个从[ModelBinder]继承而来 实体,用于配置model binder只应用到URL数据。 body只能被读取一次。...意味着MVC参数绑定可以反复从body查找参数片断。然而,在WebAPI,请求主体(HttpContent) 只能被读取一次,不被缓存,只能向前读取流。...不同于上面的action,复杂类型c1将从url读取,c2将从body读取 void Action([ModelBinder(MyCustomBinder)] SomeType c) // 标示使用特定

1.4K60

快速入门系列--MVC--04模型

所以不太利于程序开发分工,在当前互联网需求迅速变化场景下变得不是也别适合。...其使用System.Web.Mvc.ModelMetadata来表示Model元数据,并且ModelMetadata是一种迭代,支持自包含结构,有点像组合模式。...即使不使用Razor视图引擎,直接使用静态HTML5页面,该模块仍然不可或缺。现在简单介绍一下ASP.NET MVC相关Model绑定。     ...扁平化"这个概念在现在数据呈现中出现非常多,无论是这儿MVCViewModel, 还是WPFMVVM框架下ViewModel。...除此之外,昨晚也是第一次从https://aspnetwebstack.codeplex.com/上用git下载到了到MVC源码,本以为会比较艰难,但实际却非常方便,怒赞下。

88850

.Net高级进阶,教你如何构建企业模型数据拦截层,动态控制字段验证

现在,你有一个MVC架构web项目,你要完成一个注册功能。 前台传了3个值到你控制器,分别是账号、密码、邮箱。 ?...上面这个图只是个理想小例子,实际开发情况是,可能一次性要传十几个字段甚至更多。 那么在实际开发,通常为了复用性,我们将3个参数用一个实体类来代替。 即如下所示。 ? ?...注:这一步会有个知识点,叫做模型验证,不懂童鞋可以百度下,MVC会通过一定规则自动直接将参数反序列化成所对应实体类,但是因为这个示例是webapi模式,写法略有不同,所以还要在参数前加个[FromBody...至于具体为什么会自动反序列化,在本篇并不是要讲主题,所以感兴趣童鞋可以百度下:MVCModelBinder    。...或者你直接不用这些框架封装好验证特性,使用自己定义自定义验证特性,然后把控制方法都写在里面?这样太麻烦,而且违背初衷。自定义ModelBinder ?更扯淡。

81410

通过实例模拟ASP.NET MVCModel绑定机制:简单类型+复杂类型

总的来说,针对目标Action方法参数Model绑定完全由组件ModelBinder来实现,在默认情况下使用ModelBinder类型为DefaultModelBinder,接下来我们将按照逐层深入方式介绍实现在...为了验证我们自定义DefaultModelBinder能够真正地用于针对简单参数类型Model绑定没我们将它应用到一个具体ASP.NET MVC应用。...在通过Visual StudioASP.NET MVC项目模板创建空Web应用,我们创建了如下一个默认HomeController。...假设在将Contact作为Model类型强类型View,我们通过调用HtmlHelper扩展方法EditorFor将Model对象所有信息以编辑模式呈现出来。...如下面的代码片断所示,在BindModel方法我们创建了一个基于参数类型ModelMetadata对象,并根据其IsComplexType属性判断参数类型是否为复杂类型。

1.8K80

编码最佳实践——依赖注入原则

有些类是需要默认构造函数,比如MVC框架Controller类,一旦使用构造函数注入,就无法使用默认构造函数。...在这三种注入方式,推荐使用构造函数注入。最重要原因是服务应该是独立自治,即使脱离了DI框架,这个服务应该仍然可以工作。...那么Service Locator(服务定位器模式)对代码造成了哪些破坏呢? 因为容器服务是全局注册,所以DI容器是静态,这会导致出现静态类或者服务中出现静态变量和字段。...服务定位器暴露了容器存在信息。原因是服务定位器允许类检索任何对象,无论是否合适。这样违背了依赖注入“好莱坞准则”,不要调用我们,我们会调用你。...另外在没有从构造函数注入机会时,可以考虑选择服务定位器模式。选择模式原则是:依赖注入模式优于服务定位器模式,优于手动构造注入依赖,优于不注入依赖。

83120

ASP.NET MVC以ModelValidator为核心Model验证体系: ModelValidator

具体在Model绑定过程ModelBinder通过ValueProvider为Model对象某个属性提供相应属性值之后,会根据定义在基于该属性Model元数据验证规则实施验证。...值得一提是,我们在调用ModelValidatorValidate方法确定目标数据是否通过验证时,有时候会将方法返回值和定义在类型ValidationResult具有如下定义静态只读字段Success...三、ClientModelValidator ClientModelValidator是定义在程序集System.Web.Mvc.dll内部类型,在客户端用于数据类型验证。...实际上带来了一个问题,我们无法对错误消息进行定制。...,个人将其称为“自我验证”,即数据对象自行实现针对自身验证。

1.4K10

MVC项目开发那些用到知识点(Jquery ajax提交Json后台处理)

前言   jQuery提供ajax方法能很方便实现客户端与服务异步交互,在asp.net mvc 框架使用jQuery能很方便地异步获取提交数据,给用户提供更好体验!   ...:{firstName:"李",lastName:"李大嘴"}}   那么服务器是无法正常接收到完整参数,因为jQuery对data序列化,是使用了键值对拼装方式; 参数拼装成 userId=32323&...userName=object ; userName所指向对象被序列化成字符串"object"   如何才能把一个复杂object对象提交到后台action参数呢?...更多信息,请访问 http://asp.net/mvc。...通过代码可以看出是将Json字符串传递到服务端,服务端对其进行解析然后又转换为Json返回到客户端。 总结  没有做不到,只有想不到,你想怎么传就怎么传了,想传什么样格式数据,只要定义好即可。

1.8K20

MVC项目开发那些用到知识点(Jquery ajax提交Json后台处理)

前言   jQuery提供ajax方法能很方便实现客户端与服务异步交互,在asp.net mvc 框架使用jQuery能很方便地异步获取提交数据,给用户提供更好体验!   ...:{firstName:"李",lastName:"李大嘴"}}   那么服务器是无法正常接收到完整参数,因为jQuery对data序列化,是使用了键值对拼装方式; 参数拼装成 userId=32323&...userName=object ; userName所指向对象被序列化成字符串"object"   如何才能把一个复杂object对象提交到后台action参数呢?...更多信息,请访问 http://asp.net/mvc。...通过代码可以看出是将Json字符串传递到服务端,服务端对其进行解析然后又转换为Json返回到客户端。 总结  没有做不到,只有想不到,你想怎么传就怎么传了,想传什么样格式数据,只要定义好即可。

1.7K31

.NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

模型绑定 什么是模型绑定 来源有哪些 复杂数据绑定 ASP.NET Core 模型绑定:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models...FluentValidation 什么是模型验证 ASP.NET Core MVC 和页面模型验证 Razor:https://docs.microsoft.com/zh-cn/aspnet/core...[Compare]:验证模型两个属性是否匹配。 [EmailAddress]:验证属性是否具有电子邮件格式。 [Phone]:验证属性是否具有电话号码格式。...[Range]:验证属性值是否在指定范围内。 [RegularExpression]:验证属性值是否与指定正则表达式匹配。 [Required]:验证字段是否不为 null。...[StringLength]:验证字符串属性值是否不超过指定长度限制。 [Url]:验证属性是否具有 URL 格式。 [Remote]:通过在服务器上调用操作方法来验证客户端上输入。

2.4K10

.NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

; MVC Endpoint 22.jpg 模型绑定 什么是模型绑定 来源有哪些 复杂数据绑定 ASP.NET Core 模型绑定:https://docs.microsoft.com/zh-cn...FluentValidation 什么是模型验证 ASP.NET Core MVC 和页面模型验证 Razor:https://docs.microsoft.com/zh-cn/aspnet/core...[Compare]:验证模型两个属性是否匹配。 [EmailAddress]:验证属性是否具有电子邮件格式。 [Phone]:验证属性是否具有电话号码格式。...[Range]:验证属性值是否在指定范围内。 [RegularExpression]:验证属性值是否与指定正则表达式匹配。 [Required]:验证字段是否不为 null。...[StringLength]:验证字符串属性值是否不超过指定长度限制。 [Url]:验证属性是否具有 URL 格式。 [Remote]:通过在服务器上调用操作方法来验证客户端上输入。

2.5K11

Asp.net mvc 知多少(十)

IOC更多是一个通用术语,不仅仅局限于DI。DI和Service Locator(服务定位器模式是对IOC模式一种实现方式。 ?...依赖注入模式使用构造器对对象初始化并提供需要依赖给对象,也就意味着允许你从类外部注入一个依赖项。...例如,假设你客户端类需要使用一个服务类组件,那么你能做就是让你客户知道一类IService接口而不是服务类。这样,你就可以随时改变Service类实现而不会中断已经部署代码。 ? Q94....什么是Service Locator(服务定位器)? Ans. Service Locator 是一种软件设计模式,使得我们可以开发松耦合代码。...Service Locator模式引入了一个locator(定位器对象,该对象用来解决依赖,意味着通过在类引用该定位器对象就可以解决类依赖项。 ?

1.2K100

Spring系列三:IoC 与 DI

如下: 使用工厂模式 使用服务定位器模式 使用以下任何给定类型依赖项注入 构造函数注入 setter注入 注解注入 Spring控制反转 org.springframework.beans...DI与服务定位器模式有何不同? 依赖项注入器主要好处是,它允许根据环境和使用情况注入合适服务实现。注入不是打破这种依赖性唯一方法,另一种方法是使用服务定位器。...服务定位器基本思想是拥有一个对象,该对象知道如何掌握应用程序可能需要所有服务。然后,它将扫描所有此类服务,并将它们存储为单例注册表。...定位器可以隐藏对其他实现依赖关系,但是还是需要查看定位器使用哪个更好服务(即服务定位器或依赖项注入)? 正如上文已经说过,关键区别在于,使用服务定位器服务每个用户都对定位器有依赖性。...意味着必须在输入和输出方面了解服务定位器详细信息。因此,实际上成为选择哪种模式决定因素。

57710

避免在ASP.NET Core中使用服务定位器模式

题记:服务定位器(Service Locator)作为一种反模式,一般情况下应该避免使用,在ASP.NET Core更是需要如此。...Scott Allen在其博客网站上发表了一篇名为“Avoiding the Service Locator Pattern in ASP.NET Core”文章解释了这一模式会带来问题:导致应用程序无法完全基于控制反转...虽然可以把ASP.NET Core中提供HttpContext.ApplicationServices或HttpContext.ReqeustServices作为服务定位器使用(如下代码片段),但是应该避免这样使用...async Task Invoke(HttpContext context, IAmACustomService service) { // ... } } 在控制器可以在构造器中注入服务...customService = customService; } public IActionResult Get() { // ... } } 在控制器操作方法可以利用

1.2K80

基于DotNet构件技术企业级敏捷软件开发平台 - AgileEAS.NET - 服务定位器(SL)与AgileEAS.NET实现

言归正传,在设计模块上有这么一个模块Service Locator模式,大概就是叫他服务定位器家伙,AgileEAS.NET平台服务定位器理论上也实现了这种模式,他做为对象控件反转IOC一个补充,...也就是说,在具体应用服务消费者通过服务定位器获得指定服务实现,从而将服务消费者、服务定义与实际服务实现代码解耦,服务消费者可以在相同接口上注册不同实现,从而可以不改变使用代码就能改变实现功能...,使用服务定位器解偶会更好一些,在AgileEAS.NET平台中服务定位器也提供了IOC解偶实现,即可以对服务对象指向一IOC某个容器。         ...AgileEAS.NET平台中服务定位器可以理解为服务定位器模式实现,也可以理解为对企业应用对不同服务(WebService、Remoting)发现、定位与集成,从应用角度来讲,AgileEAS.NET...服务定位器设计也充分应用接口驱动思路,对系统提供各种服务,需提供抽像服务接口,服务消费者直接使用接口进行服务调用,而具体服务实现则由服务定位器在运行时动态完成服务发现与定位。

60050
领券