Как сделать MVC AttributeFilter, чтобы проверить опубликованное расширение файла - PullRequest
0 голосов
/ 21 июля 2010

У меня есть контроллер, который обрабатывает загрузку файлов.В конечном итоге я хотел бы иметь возможность создавать атрибуты для украшения действий моего контроллера, например [HttpPostedFileType("zip")] или что-то подобное.

В настоящее время я создал этот метод расширения, который я использую в действии.

 public static string GetFileExtension(this HttpPostedFileBase file)
   {
       if (!file.FileName.Contains('.'))
           throw new FormatException("filename does not contain extension");

       return file.FileName.Split(".".ToCharArray()).Last();
   }

Сигнатура действия:

    [HttpPost]
    public ActionResult Shapefile(HttpPostedFileBase file)
    {
        file.GetFileExtension()
        ...
    }

Я начал создавать атрибут HttpPostedFileTypeAttribute и думалЯ бы переопределил метод OnActionExecuting и вызвал бы расширение.В этом случае с опубликованными файлами я могу получить запрос Http и перебрать файлы, но с привязкой модели mvc, имеющей HttpPostedFileBase, или их перечисление намного чище, чем способ получения файлов asp 1.x.

Мой вопрос: могу ли я получить параметры в атрибуте при выполнении действия или они еще не связаны, поскольку жизненный цикл еще не достиг метода действия?Должен ли я создать модель со свойством HttpPostedFileBase и создать атрибут проверки?Рекомендации?

1 Ответ

0 голосов
/ 21 июля 2010

filterContext имеет словарь ActionParameters. Я могу просто использовать это.

...