MVC保存空字符串默认值为null

时间:2014-01-20 10:51:09

标签: c# sql-server asp.net-mvc string null

我的模型来自SQL服务器数据库,我不允许字段包含 NULL 。 在我的MVC主页中编辑一行时,我得到了预期的结果:

  

无法将值NULL插入列'husnr',表'PrenSQL.dbo.adress';列不允许空值。更新失败。

所以我搜索了一些,发现并将其添加到所有字符串值。

[DisplayFormat(ConvertEmptyStringToNull = false)]

现在我的某些领域似乎有效,但不适合其他人......

在我的编辑GET请求中,空字段确实为空。但在POST中,有些是空的“”,有些是 null

...
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Husnr { get; set; }
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Husbokstav { get; set; }
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Etage { get; set; }
...

POST Edit info

所以我在Stackoverflow中找到了this,但是在相同的字段上得到了相同的错误。

我的问题是,如何将这些空字段作为空字符串进行POST?

编辑:当我创建一个新的(在这种情况下)Adress时,它会将字段POST回空。

2 个答案:

答案 0 :(得分:1)

尝试将所有String.Empty用作默认值,而不是空值。 就像帖子Annotating properties on a model with default values

一样

注意,如果将属性标记为[必需],则无法插入带有空字符串的记录作为值。

修改

  

当我创建一个新的(在这种情况下)Adress时,它会将字段POST回空。

您必须将当前表单上的属性添加为隐藏字段。只有这样才能通过POST发回值。

答案 1 :(得分:0)

为所有db varchar字段设置一个默认值,例如' - ',所以每当没有任何内容传递给它们时,insert不会失败,因为字符串将采用默认值。