![](/img/trans.png)
[英]Error assigning null to a nullable int - “The value 'null' is not valid for property”
[英]ModelState error: The value 'null' is not valid for nullable field
ModelState 抛出错误,因为可空字段为 null。
我有一个 model:
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; }
}
Controller:
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。当我开始调试时,我看到了这个错误
为什么ModelState
会捕获错误? OrganizationId
显然是一个可为nullable
的字段。 我在 stackoverflow 上看到了主题,但无法使用该解决方案,因为这里没有Global.asax
in .net core
。
您的代码正在尝试在nullable int
字段OrganizationID
插入字符串数据'null'
。其余部分不在此处,请自己弄清楚为什么OrganizationID
字段获取的是字符串'null'
而不是null
。 这可能是parsing
的原因。
您可以通过调用ModelState.Clear();
. 然后在代码中手动添加您需要的任何验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.