【发布时间】:2020-07-01 07:54:42
【问题描述】:
我在 ASP.NET Core 3 中为类型文件创建验证。
这是我的模型验证:
public class MustbeImageFile : ValidationAttribute
{
public string[] Extentions { get; set; }
public string ErrorMessage { get; set; }
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var file = value as IFormFile;
var extension = Path.GetExtension(file.FileName);
if (file != null)
{
if (Extentions.Equals(extension))
{
return new ValidationResult(ErrorMessage);
}
}
return ValidationResult.Success;
}
}
我在一个属性上使用它:
[MustbeImageFile(ErrorMessage = "Must be Send Image File", Extentions = new string[] { "png", "jpeg", "jpg" })]
public IFormFile Photo { get; set; }
这是我的控制器:
public async Task<ApiReturn> RegisterUser([FromForm]RegisterDto register)
{
if (ModelState.IsValid)
{
var result = await dispatchers.SendAsync(new CreateUserCommand()
{
Email = register.Email,
UserName = register.UserName,
FirstName = register.FirstName,
LastName = register.LastName,
PhoneNumber = register.PhoneNumber
});
if (result.Success)
{
return Ok();
}
return BadRequest(result.ErrorMessage);
}
return BadRequest(ModelState);
}
我发送了一个 pdf 文件,我预计会收到此错误:
必须是图片文件
但我得到了这个错误:
Microsoft.AspNetCore.Mvc.ValidationProblemDetails
有什么问题?我怎样才能显示我的错误详细信息而不仅仅是Microsoft.AspNetCore.Mvc.ValidationProblemDetails?
【问题讨论】:
-
ErrorMessage继承自 ValidationAttribute。所以只需从 MustbeImageFile 类中删除public string ErrorMessage { get; set; }。
标签: c# asp.net asp.net-mvc asp.net-core