我遇到模型绑定问题,该问题发生在控制器操作的上下文之外。我正在使用以下代码来处理绑定,并且该绑定在几乎所有场景中都可以使用,但是,它似乎属于“ DateTime?”类型的所有属性。有人有什么想法吗?在这种情况下,TEntity是代表博客文章的POCO,因此具有多个字段,例如字符串,longs等,并且这些字段都具有很好的绑定性。只是绑定的可选日期时间(在这种情况下称为“ PublishStart”和“ PublishEnd”)。从BindModel返回的结果始终具有空值。表单集合中的输入对于日期时间始终使用格式“ dd / MM / yyyy”。
在调试模式下单步执行代码时,我尝试使用valueProvider.GetValue(“ PublishStart”),该方法不会引发任何错误并显示对RawValue的期望,但是我看不到如何获取从该结果中获取值,以检查其是否解析正常。
我正在使用的代码如下。有人有什么想法吗?
var valueProvider = new NameValueCollectionValueProvider(formCollection, null);
var metadata = ModelMetadataProviders.Current.GetMetadataForType(null,
typeof(TEntity));
var bindingContext = new ModelBindingContext
{
ModelName = "",
ValueProvider = valueProvider,
ModelMetadata = metadata
};
var controllerContext = new ControllerContext();
var binder = new DefaultModelBinder();
// act
TEntity actual = (TEntity)binder.BindModel(controllerContext, bindingContext);
Global ASAX具有以下设置默认模型联编程序的功能
System.Web.Mvc.ModelBinders.Binders.DefaultBinder = new DefaultModelBinder();
因此,稍加挖掘便得出了答案。原来有人为DateTimes添加了一个自定义模型活页夹,这导致它返回null。讲故事的道德,请注意对Binders.Add的调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句