【发布时间】:2010-03-01 14:52:43
【问题描述】:
我想为DateTime 类型编写自己的模型绑定器。首先,我想编写一个新属性,可以附加到我的模型属性,例如:
[DateTimeFormat("d.M.yyyy")]
public DateTime Birth { get; set,}
这是最简单的部分。但是活页夹部分要困难一些。我想为DateTime 类型添加一个新的模型绑定器。我也可以
- 实现
IModelBinder接口并编写我自己的BindModel()方法 - 从
DefaultModelBinder继承并覆盖BindModel()方法
我的模型有一个如上所示的属性 (Birth)。因此,当模型尝试将请求数据绑定到此属性时,我的模型绑定器的 BindModel(controllerContext, bindingContext) 被调用。一切都好,但是。 如何从控制器/bindingContext 中获取属性属性以正确解析我的日期?我怎样才能到达Birth属性的PropertyDesciptor?
编辑
由于关注点分离,我的模型类是在不(也不应该)引用 System.Web.MVC 程序集的程序集中定义的。在这里设置自定义绑定(类似于Scott Hanselman's example)属性是不行的。
【问题讨论】:
-
这有帮助吗? hanselman.com/blog/…
-
不是真的,因为他不使用任何自定义属性。我可以使用 BindAttribute 但这不是一个通用的解决方案。你很容易忘记在你的行动中写下来。
-
你有解决这个问题的有效方法吗?我有同样的问题,我想知道您选择了哪种解决方案
-
@Davide Vosti:我最终将客户端上的日期时间值重新格式化为隐藏字段。当用户从日期选择字段中模糊时,它会被填充。它有效。这是一种解决方法,它没有附带大量附加代码,并且适用于我的场景。
-
谢谢!与此同时,我能够找到一个好的解决方案。还是谢谢你的建议
标签: asp.net-mvc binding modelbinders custom-model-binder