Я реализую веб-API с использованием инфраструктуры REST для ASP.NET MVC (MVC 2).Я хочу инкапсулировать этот код, в идеале в ActionFilterAttribute (?), Чтобы я мог украсить определенные действия, которые всегда выполняют ту же логику:
if (!ModelState.IsValid) {
return View(
new GenericResultModel(){ HasError=True, ErrorMessage="Model is invalid."});
}
Я действительно не хочу копировать и вставлятьэтот шаблонный код в каждое действие контроллера, где мне нужно это сделать.
В этом сценарии веб-API мне нужно иметь возможность сделать что-то подобное, чтобы вызывающий мог получить результат обратно в форме JSON или POXи вижу, что есть ошибка.В представлении ASPX, очевидно, мне не понадобится что-то подобное, так как элементы управления проверкой позаботятся об уведомлении пользователя о проблеме.Но у меня нет представления ASPX - я возвращаю только данные JSON или POX, сериализованные из моей модели.
Я начал с этим кодом в ActionFilter, но не уверен, что делать дальше (или еслиэто даже правильная отправная точка):
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
bool result = filterContext.Controller.ViewData.ModelState.IsValid;
if (!result)
{
GenericResultModel m = new GenericResultModel() { HasError = true };
// return View(m)
// ?????
}
base.OnActionExecuting(filterContext);
}
Как мне это сделать?