首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ModelBinders中使用DefaultModelBindingMessageProvider

如何在ModelBinders中使用DefaultModelBindingMessageProvider
EN

Stack Overflow用户
提问于 2018-12-19 00:24:39
回答 1查看 260关注 0票数 0

我们有一个自定义的DateTimeModelBinder,它过去在ASP.NET Core1.1上工作得很好,但在升级到2.2之后,它失败了。这是最糟糕的部分:

代码语言:javascript
复制
            bindingContext.ModelState.TryAddModelError(
                    bindingContext.ModelName,
                    bindingContext.ModelMetadata.ModelBindingMessageProvider.ValueMustNotBeNullAccessor(
                        valueProviderResult.ToString()));

错误是:

Method not found: 'Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.IModelBindingMessageProvider Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata.get_ModelBindingMessageProvider()'.

失败的部分是:

bindingContext.ModelMetadata.ModelBindingMessageProvider

显然,有些事情已经改变了。我发现这条消息解释了这个突破性的变化,但所有这些都是:

https://github.com/aspnet/Announcements/issues/240

显然,我们现在必须使用DefaultModelBindingMessageProvider,但是整个应用程序如何共享一个公共应用程序,包括模型绑定器?

问题是,在ModelBinders中,bindingContext.ModelMetadata.ModelBindingMessageProvider曾经指向包含字符串的类,但现在指向抽象类,因此失败并出现上述错误。

相反,使用它可以工作,但每次使用时更新这个类似乎都是错误的(而且,对翻译的更改也不会反映出来)。

代码语言:javascript
复制
            bindingContext.ModelState.TryAddModelError(
                    bindingContext.ModelName,
                    new DefaultModelBindingMessageProvider().ValueMustNotBeNullAccessor(
                        valueProviderResult.ToString()));

我觉得我应该能够在我的Startup.cs的bindingContext中设置ModelMetadataModelBindingMessageProvider属性,但是还没有发现如何设置(或者我是否在正确的轨道上)。我是吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-19 18:27:29

正如第一个代码片段所示,它确实可以工作。我的问题是,显示的代码位于依赖于Microsoft.AspNetCore.Mvc版本1.1.3的nuget包中。在我使用nuget包的项目中,我只是简单地将Microsoft.AspNetCore.Mvc覆盖到2.2.0版,并假设这已经足够好了(两种实现的代码都是相同的)。

但我的假设是错误的:代码是相同的,但ModelBindingMessageProvider被更改为抽象类/对象(来自普通类/对象),并使用1.1.3的编译nuget包,因此继续指向不能/不能由2.2.0aspnetcore更新的错误类型。将nuget包中的依赖项升级到2.2.0可以使nuget包正常工作。

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

https://stackoverflow.com/questions/53837244

复制
相关文章

相似问题

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