Вы сомневаетесь, что это немного запутывает. Вы хотите отслеживать выполнение действий/результатов или выполнение вложения в виде шрифта. Почему у вас есть связующее устройство, связывающее ваш репозиторий с целью создания объекта? Модельное связующее должно построить объект для типа, указанного в действии HttpPost
. Что касается отслеживания действий/результатов, здесь приведена небольшая ссылка, которая может помочь вам определить, что вы хотите отслеживать (если вы хотите отслеживать с помощью фильтров действий).
В MVC вы можете отслеживать, когда действие началось, и когда оно закончилось, и вы также можете отслеживать, когда результат начался, и когда результат закончился.
Первые два варианта реализованы через интерфейс IActionFilter
. Этот фильтр требует, чтобы вы реализовали два метода: OnActionExecuting
и OnActionExecuted
. Первый метод вызывается непосредственно перед началом действия, а последний метод вызывается сразу после завершения действия.
Второй интерфейс касается генерируемого результата. Это реализовано через интерфейс IResultFilter
. Он также содержит два метода для реализации. Это OnResultExecuting
и OnResultExecuted
. Первый метод, OnResultExecuting
вызывается после завершения OnActionExecuted
. Это тот момент, когда вы результат, допустим, ViewResult
начал обработку вывода, который вернется к пользователю. После того, как представление будет готово и возвращено пользователю, выдается OnResultExecuted
. Это сообщает вам, что обработка выполнена.
Теперь, что вы хотите зарегистрировать, зависит от вас. Если вам нужно регистрироваться при запуске вашего действия, выполняется вызов базовых источников данных и заканчивается, а затем реализуется IActionFilter
. Если вам нужно отслеживать, сколько времени требуется для обработки результата, тогда выполните команду IResultFilter
.
Вы также можете реализовать оба фильтра сразу, наследуя от ActionFilterAttribute
.
Ваша модель, связывающая базу данных, является ужасным дизайном, и вы начинаете понимать, почему. Модельное связующее должно связывать только данные, отправленные с клиента. Вам лучше было бы сделать это в ActionFilter, а не в качестве связующего. –