Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MVC获取包含子模型错误的所有模型验证错误_C#_Asp.net Mvc_Validation - Fatal编程技术网

C#MVC获取包含子模型错误的所有模型验证错误

C#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

我想过滤所有模型验证错误。例如:

我的HealthCenterViewModel

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进行验证