ModelState引发错误,因为可为空的字段为空。
我有一个模特:
public class PersonModel
{
public int? ID { get; set; }
[Required]
[StringLength(256)]
public string Title { get; set; }
[Required]
[StringLength(256)]
public string Name { get; set; }
[Required]
[StringLength(256)]
public string Lastname { get; set; }
[StringLength(1024)]
public string Description { get; set; }
public int? OrganizationID { get; set; }
public string Organization { get; set; }
}
控制器:
var errors = ModelState.Where (c => c.Value.Errors.Count > 0).Select (c => c.Value).ToList ();
if (!errors.Any ()) {
Person entity;
if (model.ID.HasValue && model.ID > 0) {
if (!Session.HasClaim (DataCache.Claims.EditPerson))
return BadRequest ();
entity = Repository.GetPerson (model.ID.Value);
} else {
if (!Session.HasClaim (DataCache.Claims.AddPerson))
return BadRequest ();
entity = new Person ();
Repository.AddPerson (entity);
if (!model.OrganizationID.HasValue && !string.IsNullOrEmpty (model.Organization)) {
var organization = new Organization () {
Title = model.Organization
};
Repository.AddOrganization (organization);
entity.Organization = organization;
}
}
TypeMapper.MapPersonModelToEntity (model, entity);
Repository.Save ();
}
'errors'
变量等于1。开始调试时,我看到了this error
为什么ModelState
捕获到错误? OrganizationId
显然是nullable
字段。
我在stackoverflow上看到Topic,但是由于Global.asax
中没有.net core
,所以无法使用该解决方案。
答案 0 :(得分:2)
您的代码正在尝试在'null'
字段nullable int
中插入字符串数据OrganizationID
。由于其余部分不在此处,请自己弄清楚OrganizationID
字段的原因正在获取字符串'null'
而不是null
的值。这可能是parsing
的原因。