C#MVC获取包含子模型错误的所有模型验证错误
我想过滤所有模型验证错误。例如: 我的HealthCenterViewModelC#MVC获取包含子模型错误的所有模型验证错误,c#,asp.net-mvc,validation,C#,Asp.net Mvc,Validation,我想过滤所有模型验证错误。例如: 我的HealthCenterViewModel public class HealthCenterViewModel { [Required] public string Name { get; set; } public string FaxNumber { get; set; } [Required] public AddressModel Address { get; se
public class HealthCenterViewModel {
[Required]
public string Name { get; set; }
public string FaxNumber { get; set; }
[Required]
public AddressModel Address { get; set; }
...
}
public class AddressModel {
[Required]
public string Street { get; set; }
[Required]
public string StreetNumber { get; set; }
... }
我想得到所有包含子模型错误的模型验证错误,所以我使用了这个ValidationActionFilter
public class ValidationActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var modelState = actionContext.ModelState;
if (!modelState.IsValid)
actionContext.Response = actionContext.Request
.CreateErrorResponse(HttpStatusCode.BadRequest, modelState);
}
}
问题是我总是得到这样的回复:
model.Address:"The Address field is required."
model.Email:"The Email field is required."
model.PhoneNumber:"The PhoneNumber field is required."
model.ShortName:"The ShortName field is required."
但是不需要关于地址
模型中的哪个属性
是否可能以某种方式从地址返回验证错误消息
我想找回一些东西,比如:
model.Address.Street:"The Address.Street field is required."
model.Address.StreetNumber:"The AddressStreetNumber field is required."
简而言之,答案是否定的。
DefaultModelBinder
将为地址添加一个验证错误
没有值被发布,并且不会为AddressModel
的属性“递归”添加一个ModelStateError
(由于其null
),在MVC中(在控制器方法内),您可以使用AddressModel address=newaddressmodel();bool isValid=TryValidateModel(地址,“地址”)
将Address.Street
和Address.StreetNumber
的验证错误添加到ModelState
,但不确定如何使用WebApi做到这一点简短的回答是“否”——DefaultModelBinder将为Address
添加一个验证错误,因为没有值被发布,并且不会“递归”为AddressModel
的属性添加ModelStateError
(由于其null
),在MVC中(在控制器方法中),您可以使用AddressModel address=new AddressModel();bool isValid=TryValidateModel(address,“address”);
为address.Street
和address.StreetNumber
添加验证错误到ModelState
,但不确定如何使用WebAPI进行验证