powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - Сценарии использования ActionExecutingContext.Result
6 сообщений из 6, страница 1 из 1
MVC - Сценарии использования ActionExecutingContext.Result
    #38607248
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно этот тип используют во всяких фильтрах, типа ActionFilterAttribute. Например, в методе

Код: c#
1.
ActionFilterAttribute.OnActionExecuting(ActionExecutingContext filterContext)



Я под дебагом смотрю - Result по дефолту null. Если я его в фильтре использую, то это свойство для перенаправления используется - скажем, если юзер не авторизован, то перенаправляю его на страницу залогинивания. Но нигде не написано, что делать, если перенаправлять не надо, а надо продолжить запрос. Я просто оставляю этот Result null'ом (т. е. не присваиваю ему ничего), если мне не нужно перенаправление. Вроде, работает - т. е. продолжается запрос. Это правильный сценарий использования?

Я вот раньше пытался присвоить этому Result такую штуку

Код: c#
1.
new RedirectResult(context.Request.Url.AbsoluteUri)



и, естественно, получал бесконечный цикл в фильтре (фильтр всё время перенаправлял на тот же метод, на котором этот фильтр срабатывал), на который браузер выдавал "Object moved to here". Гуглил-гуглил, как это обойти - нашёл только вот - т. е. что-то, связанное с "промывкой" потока ответа. И, судя по тому, что это связано с потоками - это старая версия из ASP.NET (без MVC), т. к. вроде там Response и Request были потоками. Вобщем непонятно. И я подумал, что это какое-то сложное и странное решение, и должно быть что-то попроще. Наткнулся где-то на реализацию авторизационного фильтра (через дотнетовский интерфейс IAuthorizationFilter), где Result'у (правда, это был AuthorizationContext.Result) присваивался RedirectToRouteResult (с перенаправлением на страницу залогинивания), только если юзер был неавторизован, а если был авторизован, то ничего не происходило. И решил тоже ничего не присваивать Result'у, если мне не нужно перенаправление.

Но в том-то и штука, что такой сценарий нигде не описан! Может, кто даст ссылку, где сказано, как работать с ActionExecutingContext.Result
...
Рейтинг: 0 / 0
MVC - Сценарии использования ActionExecutingContext.Result
    #38607405
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320 Но в том-то и штука, что такой сценарий нигде не описан! Может, кто даст ссылку, где сказано, как работать с ActionExecutingContext.Result

перед вызовом действия контроллера срабатывает аспект фильтра, где можно отменить выполнение действия контроллера, присвоив своё значение Result. по-моему всё просто и очевидно.

вы чего сделать-то хотите? для авторизации с перенаправлением необходимо просто проверять какое действие должно выполниться или правильно реализовать фильтр авторизации.
...
Рейтинг: 0 / 0
MVC - Сценарии использования ActionExecutingContext.Result
    #38607593
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

мне надо было только узнать, правильно ли я работал с Result: если надо "перехватить", то присваиваю ему новый ActionResult, а если "всё в порядке - продолжить", то ничего Result не присваиваю.
...
Рейтинг: 0 / 0
MVC - Сценарии использования ActionExecutingContext.Result
    #38607598
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне почему-то казалось, что Result'у значение надо присваивать всегда, и в случае, когда перенаправление не требуется (т. е. надо продолжить текущий запрос), ему надо присвоить текущий УРЛ:

Код: c#
1.
RedirectResult(context.Request.Url.AbsoluteUri)
...
Рейтинг: 0 / 0
MVC - Сценарии использования ActionExecutingContext.Result
    #38607599
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

да, правильно.
...
Рейтинг: 0 / 0
MVC - Сценарии использования ActionExecutingContext.Result
    #38607602
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Мне почему-то казалось, что Result'у значение надо присваивать всегда

нет. присваивание Result в фильтре означает, что выполнение действия (Action) уже не требуется.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - Сценарии использования ActionExecutingContext.Result
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]