C# 控制器中的验证属性
我编写自己的属性来验证ASP.NET MVC中的模型:C# 控制器中的验证属性,c#,asp.net-mvc,custom-attributes,C#,Asp.net Mvc,Custom Attributes,我编写自己的属性来验证ASP.NET MVC中的模型: public class ValidateImage : RequiredAttribute, IClientValidatable { public override bool IsValid(object value) { // validate object } } 我这样使用这些属性: public class MyModel { [ValidateImage] public
public class ValidateImage : RequiredAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
// validate object
}
}
我这样使用这些属性:
public class MyModel
{
[ValidateImage]
public HttpPostedFileBase file { get; set; }
}
现在,我想让它在控制器中工作,并将此属性添加到属性,而不是模型:
public ActionResult EmployeePhoto(string id, [ValidateImage] HttpPostedFileBase file)
{
if(ModelState.IsValid)
{
}
}
但我的属性从未执行过。如何在不使用模型的情况下使验证在controller中工作?这不受支持。只需编写一个视图模型来包装操作的所有参数:
public ActionResult EmployeePhoto(EmployeePhotoViewModel model)
{
if (ModelState.IsValid)
{
}
}
可能是这样的:
public class EmployeePhotoViewModel
{
public string Id { get; set; }
[ValidateImage]
public HttpPostedFileBase File { get; set; }
}