Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / сохранение значений между вызовами методов контроллеров / 25 сообщений из 30, страница 1 из 2
09.10.2013, 22:28
    #38422163
Да, это я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
Здравствуйте

Возник вопрос - как правильно сохранять значения между вызовами различным методов одного контроллера (в идеале - можно и разных)?

Пример:
есть страницы, которые могут быть доступны сами по себе, а могут быть вызваны из других страниц с определенными идентификаторами. Хотелось бы понять, как можно эти идентификаторы правильно сохранять между вызовами разных методов.

Мне на ум приходят всякие самопальные сохранялки типа в БД или в кэше. Но для такой простой задачи это ИМХО перебор. Есть вариант с TempData, но там каждый раз нужно считывать данные и снова их записывать, чтобы они не терялись. То есть если был вызван любой метод контроллера и данные в TempData не были перезаписаны - они теряются.

Вариант с передачей этих идентификаторов через параметры метода какой-то громоздкий и некрасивый
...
Рейтинг: 0 / 0
10.10.2013, 00:59
    #38422244
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
Да, это яВариант с передачей этих идентификаторов через параметры метода какой-то громоздкий и некрасивыйНормальный вариант. Объясни, почему считаешь его громоздким и некрасивым?
...
Рейтинг: 0 / 0
10.10.2013, 01:13
    #38422249
Да, это я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
skyANAДа, это яВариант с передачей этих идентификаторов через параметры метода какой-то громоздкий и некрасивыйНормальный вариант. Объясни, почему считаешь его громоздким и некрасивым?

Нелогично. Есть метод, который просто выводит View. Без всякой бизнес-логики. Мне придется в КАЖДЫЙ метод, включая и этот, передавать параметр и в каждой View его читать и приплюсовывать ко всем методам.

Может, как то сумбурно объясняю?
...
Рейтинг: 0 / 0
10.10.2013, 01:24
    #38422254
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
Да, это яskyANAпропущено...
Нормальный вариант. Объясни, почему считаешь его громоздким и некрасивым?

Нелогично. Есть метод, который просто выводит View. Без всякой бизнес-логики. Мне придется в КАЖДЫЙ метод, включая и этот, передавать параметр и в каждой View его читать и приплюсовывать ко всем методам.

Может, как то сумбурно объясняю?Сумбурно. Если нет логики, то зачем параметр? Что за параметр? На фига его вообще надо передавать? Визард что-ли?
...
Рейтинг: 0 / 0
10.10.2013, 01:30
    #38422255
Да, это я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
skyANAДа, это япропущено...


Нелогично. Есть метод, который просто выводит View. Без всякой бизнес-логики. Мне придется в КАЖДЫЙ метод, включая и этот, передавать параметр и в каждой View его читать и приплюсовывать ко всем методам.

Может, как то сумбурно объясняю?Сумбурно. Если нет логики, то зачем параметр? Что за параметр? На фига его вообще надо передавать? Визард что-ли?

Что-то вроде этого. Есть справочник пользователей. Я хочу захватить мир управлять пользователями: добавлять, удалять, изменять... Есть контрагенты, за которыми закреплены пользователи. И если я из формы контрагента перехожу к диалогу выбора пользователя, то мне нужно передавать идентификатор контрагента для адресной работы. Проблема в том, что этот идентификатор нужен всего в паре действий, а всего действий для пользователя много. И мне нужно как-то сохранять идентификатор. Вот и пытаюсь понять, как это делают тру программеры.
...
Рейтинг: 0 / 0
10.10.2013, 01:37
    #38422257
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
Да, это яskyANAпропущено...
Сумбурно. Если нет логики, то зачем параметр? Что за параметр? На фига его вообще надо передавать? Визард что-ли?

Что-то вроде этого. Есть справочник пользователей. Я хочу захватить мир управлять пользователями: добавлять, удалять, изменять... Есть контрагенты, за которыми закреплены пользователи. И если я из формы контрагента перехожу к диалогу выбора пользователя, то мне нужно передавать идентификатор контрагента для адресной работы. Проблема в том, что этот идентификатор нужен всего в паре действий, а всего действий для пользователя много. И мне нужно как-то сохранять идентификатор. Вот и пытаюсь понять, как это делают тру программеры.Историю что-ли надо запомнить? Типа нужно поделать что-то с пользователем и вернуться на страницу контрагента?
...
Рейтинг: 0 / 0
10.10.2013, 01:45
    #38422258
Да, это я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
skyANAДа, это япропущено...


Что-то вроде этого. Есть справочник пользователей. Я хочу захватить мир управлять пользователями: добавлять, удалять, изменять... Есть контрагенты, за которыми закреплены пользователи. И если я из формы контрагента перехожу к диалогу выбора пользователя, то мне нужно передавать идентификатор контрагента для адресной работы. Проблема в том, что этот идентификатор нужен всего в паре действий, а всего действий для пользователя много. И мне нужно как-то сохранять идентификатор. Вот и пытаюсь понять, как это делают тру программеры.Историю что-ли надо запомнить? Типа нужно поделать что-то с пользователем и вернуться на страницу контрагента?

Не совсем. Пример: если я перехожу к пользователям от контрагента, то мне должны быть доступны действия: сменить пользователя для этого контрагента или назначить назначить пользователя, если таковой отсутствует. Ну, помимо стандартных CRUD-операций. А вот если я просто с пользователями работаю, волшебных кнопок быть не должно.
...
Рейтинг: 0 / 0
10.10.2013, 06:01
    #38422281
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
Да, это я,

сессии чем не угодили? куки? вообще странная логика имхо.
...
Рейтинг: 0 / 0
10.10.2013, 09:10
    #38422353
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
собственно если вы сейчас авторизовались как контрагент то имея эту роль думаю легко реализовать ограничение и ничего в урл не пойдет.
...
Рейтинг: 0 / 0
10.10.2013, 10:06
    #38422433
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
handmadeFromRuсобственно если вы сейчас авторизовались как контрагент то имея эту роль думаю легко реализовать ограничение и ничего в урл не пойдет.А я так и не понял, что нужно ТС. То ли наличие кнопок зависит от прав текущего пользователя, то ли действительно от того, откуда был совершён переход.
...
Рейтинг: 0 / 0
10.10.2013, 10:09
    #38422443
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
Да, это яМне на ум приходят всякие самопальные сохранялки типа в БД или в кэше.
Самый правильный способ, особенно для случаев, если клиент закроет браузер и через некоторое время захочет продолжить работу.

Да, это яВариант с передачей этих идентификаторов через параметры метода какой-то громоздкий и некрасивый
Это единственно верный путь.

hVosttДа, это я, сессии чем не угодили? куки? вообще странная логика имхо.
Если разработчик раздолбай - сессия и куки отличный инструмент для подобных задач. А нормальные люди используют БД.
...
Рейтинг: 0 / 0
10.10.2013, 10:12
    #38422451
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
МСУhVosttДа, это я, сессии чем не угодили? куки? вообще странная логика имхо.
Если разработчик раздолбай - сессия и куки отличный инструмент для подобных задач. А нормальные люди используют БД.

вот только тебя и забыли спросить, когда изобретали сессии и куки.
...
Рейтинг: 0 / 0
10.10.2013, 10:14
    #38422454
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
МСУЭто единственно верный путь.

единственно верного пути не существует. только в умах больных на всю голову людей.
...
Рейтинг: 0 / 0
10.10.2013, 10:15
    #38422458
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
hVosttвот только тебя и забыли спросить, когда изобретали сессии и куки.
Тебе только дай гавно написать, да?

P.S. Уже сто раз перетирали эту тему, особенно про всякие корзины и им подобные. Вариант с БД - это прозрачное стабильное решение, которое не зависит от количества звезд на луне.
...
Рейтинг: 0 / 0
10.10.2013, 10:16
    #38422461
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
hVosttединственно верного пути не существует. только в умах больных на всю голову людей.
Выпей яду, студент.
...
Рейтинг: 0 / 0
10.10.2013, 10:24
    #38422475
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
МСУhVosttвот только тебя и забыли спросить, когда изобретали сессии и куки.
Тебе только дай гавно написать, да?

P.S. Уже сто раз перетирали эту тему, особенно про всякие корзины и им подобные. Вариант с БД - это прозрачное стабильное решение, которое не зависит от количества звезд на луне.

нужно четко разделять, какая информация является сессионной для пользователя, а какая персистентная. товар в корзине -- персистентная. но писать про какое-то "стабильное решение" в отрыве от задачи -- слова никак не профессионала, и даже не студента. а какого-то прыщавого подростка с максималистскими ч/б заскоками.
...
Рейтинг: 0 / 0
10.10.2013, 10:33
    #38422494
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
МСУСамый правильный способ, особенно для случаев, если клиент закроет браузер и через некоторое время захочет продолжить работу.

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

ну идиоты 99,9% разработчиков веб-приложений. таких элементарных вещей не знают.
...
Рейтинг: 0 / 0
10.10.2013, 10:36
    #38422501
АБВГДЕЙ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
handmadeFromRuсобственно если вы сейчас авторизовались как контрагент то имея эту роль думаю легко реализовать ограничение и ничего в урл не пойдет.
Нет, речь как раз идет о том, чтобы из админки назначать пользователей контрагентам. Чтобы контрагент мог сам аутентифицироваться впоследствии

skyANAдействительно от того, откуда был совершён переход
Это ближе к истине. То есть нужно понимать, откуда был совершен переход и, исходя из этого, совершать какие-либо действия

hVosttДа, это я,
сессии чем не угодили? куки? вообще странная логика имхо.
вариант с сессией не пойдет, потому что нужно будет реализовывать и логику очистки этого значения. Про куки - думаю, аналогично.

МСУДа, это яМне на ум приходят всякие самопальные сохранялки типа в БД или в кэше.
Самый правильный способ, особенно для случаев, если клиент закроет браузер и через некоторое время захочет продолжить работу.

Да, это яВариант с передачей этих идентификаторов через параметры метода какой-то громоздкий и некрасивый
Это единственно верный путь.


Ув. МСУ, немного противоречите друг другу :-)


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


Поясню, почему с параметрами не очень нравится. Везде придется писать что то типа следующего:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        public ActionResult Index(
            [DefaultValue(-1)]  int contragentId)
        {


        [HttpPost]
        public ActionResult Create(
                                UserCreateOrEditModel user,
            [DefaultValue(-1)]  int contragentId)
        {



PS Сохраняемость между сессиями не нужна.
...
Рейтинг: 0 / 0
10.10.2013, 10:42
    #38422514
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
hVosttнужно четко разделять, какая информация является сессионной для пользователя, а какая персистентная. товар в корзине -- персистентная. но писать про какое-то "стабильное решение" в отрыве от задачи -- слова никак не профессионала, и даже не студента. а какого-то прыщавого подростка с максималистскими ч/б заскоками.
Далеко не всегда можно определить с ходу, какого типа информация и для чего нам нужно пытаться ее классифицировать. А если это информация, и не просто информация, а пользовательские данные в разрезе решаемой бизнес задачи - ей место в БД, а не где-то у черта на куличках. Есть такое понятие, как дальнозоркость в проектировании архитектуры - в любой момент можно провести её масштабирование, могут измениться бизнес правила и прочее. В чем отличие упоротого недальнозоркого программиста от вменяемого главного спеца, архитектора или лида? Правильно, основное отличие в том, что у упоротой обезьяны нет головного мозга для того, чтобы думать. Поэтому продолжай писать гавнокод и не смотри по сторонам.
...
Рейтинг: 0 / 0
10.10.2013, 10:43
    #38422519
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
АБВГДЕЙВ общем, исходя из обсуждения, получается, что оптимальным вариантом является TempData, просто в каждом методе придется делать чтение и повторную запись этого значения. Либо с передачей параметра в каждый метод с соответствующей правкой вьюшек

банальный F5 убьёт всю вашу логику. сессия и очистка. вариантов масса. можно использовать технологию Anti Forgery Token.
...
Рейтинг: 0 / 0
10.10.2013, 10:44
    #38422522
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
hVosttтогда надо не забывать моментально отправлять на сервер каждый символ введенный пользователем абсолютно в любую форму на сайте. на случай, если пользователь вдруг закроет браузер. а потом через некоторое время решит "продолжить работу".
Если пользователь зафиксировал сохранение данных (нажал кнопку, произвел иные действия) - то всё, что введено, нужно сохранить. Тебя это смущает?
...
Рейтинг: 0 / 0
10.10.2013, 10:44
    #38422524
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
МСУДалеко не всегда можно определить с ходу, какого типа информация и для чего нам нужно пытаться ее классифицировать. А если это информация, и не просто информация, а пользовательские данные в разрезе решаемой бизнес задачи - ей место в БД, а не где-то у черта на куличках. Есть такое понятие, как дальнозоркость в проектировании архитектуры - в любой момент можно провести её масштабирование, могут измениться бизнес правила и прочее. В чем отличие упоротого недальнозоркого программиста от вменяемого главного спеца, архитектора или лида? Правильно, основное отличие в том, что у упоротой обезьяны нет головного мозга для того, чтобы думать. Поэтому продолжай писать гавнокод и не смотри по сторонам.

я ничего не понял, что ты хотел сказать. если ты не можешь определить какого типа информация в попытке её классификации. исполняй то, шо тебе сказал то, кто может определить и классифицировать и помалкивай.
...
Рейтинг: 0 / 0
10.10.2013, 10:47
    #38422529
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
АБВГДЕЙУв. МСУ, немного противоречите друг другу :-)
Не вижу противоречий. Потому что сохранение в БД не исключает вариант передачи параметра в URL. Часто используют гуид операции, как вариант.

АБВГДЕЙВ общем, исходя из обсуждения, получается, что оптимальным вариантом является TempData
TempData - это зло, а не оптимальный вариант. Используй модель.
...
Рейтинг: 0 / 0
10.10.2013, 10:48
    #38422531
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
hVosttя ничего не понял, что ты хотел сказать.
Ты просто еще не дорос, чтобы понимать очевидные вещи. А сказал я настолько банальные вещи, что даже прыщавые студенты вроде тебя поймут.
...
Рейтинг: 0 / 0
10.10.2013, 10:50
    #38422534
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранение значений между вызовами методов контроллеров
МСУНе вижу противоречий. Потому что сохранение в БД не исключает вариант передачи параметра в URL. Часто используют гуид операции, как вариант.

да ты совсем упоротый. сначала ты говоришь что, самый правильный способ, это сохранять в БД, потом тут же комментируешь, что передача идентификаторов через параметры метода -- единственно верный путь. крышак продолжает протекать?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / сохранение значений между вызовами методов контроллеров / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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