ASP.NET MVC 2 RC2模型绑定与NVARCHAR NOT NULL列

时间:2010-04-06 21:16:22

标签: asp.net-mvc linq-to-sql data-binding asp.net-mvc-2 updatemodel

请注意:我已回答了我自己的问题,并提供了类似问题答案的链接。一旦我被允许,我会接受这个答案(除非有人在提出更好的答案的同时)。

我有一个数据库列定义为NVARCHAR(1000) NOT NULL DEFAULT(N'') - 换句话说,是一个不可为空的文本列,其默认值为空。

我有一个由Linq-to-SQL Classes设计器生成的模型类,它正确地将该属性标识为而不是可以为空。

我的视图中有TextAreaFor。我在我的控制器中使用UpdateModel来从表单中获取值并填充模型对象。

如果我查看网页并将文本区域留空,UpdateModel坚持将属性设置为NULL而不是空字符串。 (即使我在调用UpdateModel之前在代码中将值设置为空白,它仍会使用NULL覆盖该值。当然,这会导致后续数据库更新失败。

可以在调用NULL检查UpdateModel的所有此类属性,但这看起来很荒谬 - 当然必须有更好的方法吗?

请不要告诉我,我需要一个自定义模型绑定器来实现这样一个简单的场景......!

2 个答案:

答案 0 :(得分:2)

可能是重复或类似的内容:

MVC binding form data problem

我担心自定义模型绑定器是必要的。 ;)

答案 1 :(得分:0)

您可能希望使用实体的部分类实现来实现该特定属性的on属性更改处理程序。当您检测到属性已更改为NULL时,只需将其更改为string.Empty即可。这样,无论何时将NULL分配给属性,它都会重置为空字符串。