Боюсь, вы не можете сделать это, используя аннотации данных.Вы можете сделать это в действии контроллера, которое должно обрабатывать запрос:
Модель:
public class UpdateSomethingViewModel
{
[DisplayName("evidence")]
[Required(ErrorMessage = "You must provide evidence")]
public HttpPostedFileBase Evidence { get; set; }
}
Действие:
[HttpPost]
public ActionResult Foo(UpdateSomethingViewModel model)
{
if (model.Evidence != null && model.Evidence.ContentLength > 0)
{
// the user uploaded a file => validate the name stored
// in model.Evidence.FileName using your regex and if invalid return a
// model state error
if (!Regex.IsMatch(model.Evidence.FileName, @"^abc123.jpg$"))
{
ModelState.AddModelError("Evidence", "Stuff and nonsense");
}
}
...
}
Также обратите внимание, что это лучшеиспользовать HttpPostedFileBase
вместо конкретного HttpPostedFileWrapper
типа в вашей модели.Это облегчит вашу жизнь, когда вы будете писать модульные тесты для этого действия контроллера.