【发布时间】:2014-11-05 16:25:52
【问题描述】:
I've beenlookingaround,我认为我的解决方案很好,但不知何故,ModelState.IsValid 属性始终是true。
考虑以下代码 sn-ps:
[Route("address")]
[HttpPut]
[ResponseType(typeof(UserViewModel))]
public IHttpActionResult UpdateAddress([FromBody] UpdateAdressValidationModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
// irrelevant code omitted
}
[TestMethod]
public void UpdateAddress_WithoutStreet_ReturnsHttpCode400()
{
var userController = new UserController(new UserRepository(_context));
var addressInfo = new UpdateAdressValidationModel
{
City = "Ghent",
};
var response = userController.UpdateAddress(addressInfo) as BadRequestResult;
Assert.IsNotNull(response);
}
public class UpdateAdressValidationModel
{
[Required]
public string Street { get; set; }
[Required]
public int? Number { get; set; }
[Required]
public string Bus { get; set; }
[Required]
public int? PostalCode { get; set; }
[Required]
public string City { get; set; }
}
仍然给我一个有效的模型状态,即使它清楚地表明所需的属性是null。
我忽略了什么?
Validator.ValidateObject(model, new ValidationContext(model));
在UpdateAddress 方法的顶部,在Street 字段上抛出ValidationException,因此它实际上可以验证模型。问题仍然存在:为什么它不自动?
此外,this 不适用,因为我的model 不是null。
【问题讨论】:
标签: c# asp.net asp.net-web-api asp.net-web-api2 modelstate