【发布时间】:2011-12-07 08:50:54
【问题描述】:
我使用 Entity Framework Code-First 和 POCO 进行数据库交互。我有一个名为“Title”的可选字段。
当我从表单中获取对象时,默认模型绑定器会自动将“Title”设为空而不是空。
如何让模型绑定器返回一个空字符串而不是 null?
感谢您的帮助
【问题讨论】:
-
为什么不在视图模型或控制器中处理 null 呢?一个简单的
var result = foo.title ?? string.Empty;就可以了,不是吗? -
因为这会违反 DRY(不要重复自己。)我从多个地方获取该模型,并且必须在所有地方重复空字符串检查。
-
您能否创建一个部分方法 (OnTitleChanging) 来执行 Bala R 推荐的检查?这将在一个地方完成,与您的 edmx 文件分开(因此它不会被覆盖)并且应该完成您需要的。
-
设置title的值为string.Empty;在 POCO/Model 对象的构造函数中。
-
@Mark,在构造函数中设置值无济于事,因为默认模型绑定器将在之后调用属性的设置器。但是您可以更改特定 setter 的行为(如果 null 不是可能的值)并将 null 转换为 String.Empty。
标签: asp.net-mvc poco model-binding