Измените модель в ActionFilter

У меня есть actionfilter, что я выполняю OnActionExecuting в ASP.NET MVC 2. По существу я хотел бы, чтобы actionfilter санировал мои данные и заменил текущую модель (который будет передан последующим фильтрам действия и также моему методу действия) с санированной моделью. Действительно ли это возможно, и действительно ли это - плохая идея - раз так почему?

Заранее спасибо, мировой судья

6
задан JP. 12 January 2010 в 04:31
поделиться

2 ответа

Думаю, используя JavaScript, вы не сможете из-за ограничений безопасности. Флэш, возможно.

-121--2167055-

Я бы сказал, что «int» является структурой данных - она имеет определенное представление и значение. То есть, в зависимости от вашей системы, она имеет определенную длину, определенный набор доступных ей операторов и указанное представление (будь то twos-комплимент). Он предназначен для хранения «целых чисел».

Практически это различие не имеет особого значения.

-121--4294050-

Если вам нужно иметь дело с вашими моделями, вы, вероятно, будете работать больше в рамках одного контроллера (если только все ваши контроллеры не используют одни и те же типы моделей?). Альтернативный подход заключается в переопределении методов OnActionExecuting () и OnActionExecuted () самих контроллеров. Это позволяет сохранить бизнес-логику в пределах области контроллера.

Как правило, ActionFilters используются для сквозных проблем - то, что вы хотите выполнить для многих методов действий, независимо от того, где они существуют в приложении. (что, возможно, так и есть, и в этом случае ваш подход, вероятно, хорош)Вы можете вывести его из фильтров и в контроллеры. Если это что-то, что может применяться широко, то ActionFilter просто хорошо.

6
ответ дан 8 December 2019 в 17:21
поделиться

Вот для MVC V1, я надеюсь, что это не изменяется в V2:

var view = filterContext.Result as ViewResultBase;
if (view != null)
   view.ViewData.Model ...

Я не понимаю, почему вы хотите сделать это в OncaIctionExecuting, но если вы должны , сделайте это там и установите какое-то флаг (частное поле), что ONACTIONEXECECT должен настроить полученную модель. Но в любом случае вам придется использовать последнее, за исключением случаев, если вы назначаете .result - в этом случае ваше действие вообще не будет вызываться, и назначенный результат будет использоваться.

6
ответ дан 8 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: