【问题标题】:MVC save empty string default value nullMVC 保存空字符串默认值 null
【发布时间】:2014-02-09 12:06:27
【问题描述】:

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

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

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

[DisplayFormat(ConvertEmptyStringToNull = false)]

现在对于我的一些领域它似乎有效,但不适用于其他领域..

在我的 Edit 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; }
...

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

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

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

【问题讨论】:

  • 问题是......?

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


【解决方案1】:

尝试使用所有 String.Empty 作为默认值,而不是 null 值。 喜欢在帖子Annotating properties on a model with default values

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

编辑

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

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

【讨论】:

    【解决方案2】:

    为所有 db varchar 字段设置默认值,例如“-”,这样只要没有传递任何内容,插入就不会失败,因为字符串将采用默认值。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2013-04-15
      • 1970-01-01
      • 2012-11-28
      • 2012-12-29
      • 2011-03-29
      • 1970-01-01
      • 2013-03-12
      • 2020-07-27
      相关资源
      最近更新 更多