Методы перехвата действия контроллера MVC - PullRequest
0 голосов
/ 03 апреля 2009

Я использую O / R Mapper, который может перезагружать объекты из БД в общем виде. Я хотел бы иметь возможность перехватить запрос сразу после создания сопоставленных объектов, чтобы перезагрузить их.

ActionFilters, конечно, есть, но проблема в том, что ActionFilters (или примеры, которые я видел) могут обрабатывать данные, предоставленные формой, а не после создания объекта.

Я посмотрел на непреодолимые методы Контроллера, но не нашел ничего очевидного, что бросилось в глаза. Кто-нибудь знает способ сделать это?

Спасибо за ваши предложения!

Насер

Ответы [ 2 ]

0 голосов
/ 03 апреля 2009

То, что вам нужно, это пользовательская модель переплета. Вы можете наследовать от класса ModelBinder по умолчанию и предоставить необходимую логику.

Например, если у вас есть это:

public ActionResult Save([Bind(typeof(CustomModelBinder))] Customer customer)
{
   /* ... */
}

Связыватель модели создаст объект для вас, но вы можете сначала выбрать его из базы данных (для существующих записей).

0 голосов
/ 03 апреля 2009

Если я правильно понимаю, вам нужно что-то подобное.

public class Navigate : ActionFilterAttribute, IActionFilter
{
    void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
    {
        ViewResult view = filterContext.Result as ViewResult;

    }
}

В поле зрения вы найдете view.ViewData.Model, который принадлежит текущему контроллеру, и вы можете делать все, что вы хотите с этими сопоставленными данными. Дайте мне знать, если я был прав:)

...