首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP.Net MVC3中测试ModelBinders

如何在ASP.Net MVC3中测试ModelBinders
EN

Stack Overflow用户
提问于 2011-08-16 02:47:14
回答 2查看 330关注 0票数 1

我正在试着为一个自定义的模型绑定器写一些测试,我的天哪,这真的很难存根。我在网上找到的东西都与ASP.Net mvc3没有直接关系,也没有非常不完整的例子。

具体地说,我遇到的最大障碍是bindingContext.ModelType -设置它显然会抛出一个(运行时)错误,表明setter已过时,并且它是从模型参数推断出来的,但我的模型参数是并且应该是空的!

EN

回答 2

Stack Overflow用户

发布于 2011-08-16 13:30:43

Hanselman在这里非常详细地解释了这一点:

http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx

更新:上面的示例已经过时了。请阅读这篇文章的评论!

票数 0
EN

Stack Overflow用户

发布于 2011-09-23 00:32:24

托马斯和乔治,你必须在ModelBindingContext上设置值提供者。下面是我的HomeController索引操作中的一个代码示例,它创建一个类型并使用默认的模型绑定器来简化对象。这只是一个简化的版本,在我的产品代码中,我实际上在控制器操作中引入了一个参数,即类型,然后动态创建类型,当您想要将多个类型发送到单个控制器操作时,效果很好。请注意,ValueProvider和ControllerContext是控制器的属性。

代码语言:javascript
复制
        HomeModel test = new HomeModel();
        ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => test, test.GetType());
        ModelBindingContext modelBindingContext = new ModelBindingContext { ModelMetadata = metadata, ValueProvider = ValueProvider};


        DefaultModelBinder defaultModelBinder = new DefaultModelBinder();
        defaultModelBinder.BindModel(ControllerContext, modelBindingContext);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7069209

复制
相关文章

相似问题

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