2009-04-03 2 views
0

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

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

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

Благодарим вас за предложения!

Насер

ответ

0

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

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

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

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

+0

Дорогой Бен! Спасибо за ваш ответ! Я нашел код для modelbinder, который поставляется с O/R Mapper, который я использую, поэтому теперь я должен попробовать и выработать перезагрузку внутри modelbinder! Благодарим вас за ответ! Nasser – Nasser

0

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

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

    } 
} 

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

+0

Уважаемый Omoto! Благодарим вас за ответ. Вы отвечаете на вопрос о результате ПОСЛЕ действия. Я действительно заинтересован в том, чтобы добраться до отображаемых объектов до того, как действие будет удалено. Поздравления Nasser – Nasser