【发布时间】:2020-01-29 07:43:19
【问题描述】:
我有一个模型从 cshtml 视图发布到我的后端。这个模型也是一个数据库表的表示。
此代码查找 HTTP POST,如下所示:
[HttpPost]
public IActionResult CreateAKG(Conversation akg)
{
if (ModelState.IsValid && ValideD3OrD4Values(akg))
{
akg.RDPflichfelderBefuellt = true;
}
else
{
akg.RDPflichfelderBefuellt = false;
}
if (akg.Kommentare == null)
{
akg.Kommentare = new List<Kommentar>();
}
if (akg.AuftragsklaerungsgespraechId == 0)
{
this.MyDatabase.Conversation.Add(akg);
}
else
{
this.MyDatabase.Conversation.Update(akg);
}
this.MyDatabase.SaveChanges();
return RedirectToAction("Index");
}
代表模型的类称为Conversation。有一些属性由 Validation Annotations 注释。注解只能由 Controller / ModelState.IsValid 使用,不能用于 Database-Table。
这是代码示例:
public class Conversation
{
public int ConversationId { get; set; }
[Required(ErrorMessage = "This field is required.")]
public DateTime? DatumAKG { get; set; }
[MaxLength(256, ErrorMessage = "This field cannot be more than 256 characters")]
public string KontierungFertigungskosten { get; set; }
[MaxLength(256, ErrorMessage = "This field cannot be more than 256 characters")]
public string KontierungQVP { get; set; }
[MaxLength(256, ErrorMessage = "This field cannot be more than 256 characters")]
public string KontierungLayoutkosten { get; set; }
[MaxLength(256, ErrorMessage = "This field cannot be more than 256 characters")]
public string KontierungBeschaffung { get; set; }
public bool RDPflichfelderBefuellt { get; set; }
}
ModelState.IsValid 仅用于验证布尔值是真还是假。不需要其他验证。
我现在的问题是,由于数据注释,在数据库中通常可能为 NULL 的字符串现在在数据库设计中配置为 NOT NULL。
如果我尝试在数据库中存储一个新对话,则会抛出一些字符串值不能为空的错误。
我想做的是:
控制器验证
没有更改数据库设计的验证注释
【问题讨论】:
标签: .net-core entity-framework-core data-annotations