Запретить выполнение метода действия MVC, если параметр имеет значение null

Я » Я придумал несколько способов сделать это, но хочу узнать мнение сообщества. У меня такое чувство, что ответ до неприличия прост - я не боюсь выглядеть глупо (мои дети давно избавили меня от этого страха!)

Я пишу веб-службу XML REST, используя MVC2. Все типы XML, которые получат и отправят потребители веб-службы, управляются простым, но обширным XSD, и эти параметры будут связаны из xml в теле запроса с помощью настраиваемого связывателя модели по умолчанию и поставщика значений.

У меня есть хороший количество контроллеров, каждый с большим количеством методов действий (не чрезмерным - просто «хорошо»;)) - и почти в каждом случае эти методы действий будут принимать типы моделей, которые все являются ссылочными типами.

На практике в каждом случае это ' s будет ошибкой для вызывающего абонента, если он не предоставит эти значения параметров, и поэтому может быть отправлено стандартное сообщение об ошибке, например «Параметр {имя} type: {ns: type} требуется» назад.

Я хочу иметь возможность проверять, не являются ли параметры нулевыми до того, как будет выполнен метод действия; а затем вернуть ActionResult, представляющий ошибку, клиенту (для этого у меня уже есть тип XMLResult ), при этом сам метод действия не должен проверять правильность параметров.

Итак, вместо:

public ActionResult ActionMethod(RefType model)
{
  if(model == null)
      return new Xml(new Error("'model' must be provided"));
}

Что-то вроде:

public ActionResult ActionMethod([NotNull]RefType model)
{
  //model now guaranteed not to be null.
}

Я знаю, что это именно тот вид сквозной резки, который может быть достигнут в MVC.

Мне кажется, что либо базовый контроллер переопределил OnActionExecuting , либо пользовательский ActionFilter - наиболее вероятный способ сделать это.

I ' d также хотел бы иметь возможность расширять систему, чтобы она автоматически выявляла ошибки проверки схемы XML (добавленные в ModelState во время привязки поставщиком настраиваемых значений), что предотвращает продолжение метода действия, если какое-либо из значений параметра не может быть загружено правильно, потому что запрос XML сформирован неправильно.

5
задан Andras Zoltan 8 September 2010 в 17:00
поделиться