Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC передача данных между контроллерами / 25 сообщений из 28, страница 1 из 2
02.02.2015, 10:31
    #38869137
bald56rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
Всем привет. кто нибуть может подсказать как реализовать следующее:
первый контроллер подразумевает подбор материала на основании характеристик вводимых пользователем,
второй контроллер уточняющий поиск на основании основных характеристик инструмента.
хочу сделать следующее пользователь заполнил модель из первого контроллера, перешел во второй и заполнил значения второй модели(характеристики инструмента) получил уточненные данные на основании введенных значений. либо пользователь перешел сразу к подбору инструмента без уточнения материала и в этом случае получил большее количество инструментов.не знаю как сделать передачу из одного контроллера в другой контроллер.

P.S.: понимаю что вопрос может быть не совсем корректно сформулирован, но как написать иначе не знаю
...
Рейтинг: 0 / 0
02.02.2015, 10:36
    #38869142
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
bald56rusпользователь заполнил модель из первого контроллера, перешел во второйЧто значит "Пользователь перешел во второй контроллер"? Он сделал новый запрос?
...
Рейтинг: 0 / 0
02.02.2015, 10:46
    #38869149
bald56rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
Shocker.Probald56rusпользователь заполнил модель из первого контроллера, перешел во второйЧто значит "Пользователь перешел во второй контроллер"? Он сделал новый запрос?
вот код страницы:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<body>
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
          <div class="navbar-header">
              @Html.ActionLink("Project name","Index","Default",new { @class = "navbar-brand" })
          </div>
          <ul class="nav navbar-nav">
            <li>@Html.ActionLink("Подбор материала", "Edit", "Grade")</li>  
            <li>@Html.ActionLink("Фрезерование", "Index", "Milling")</li>
          </ul>
      </div>
    </nav>
    @RenderBody()
</body>


т.е. пользователь переходит по ссылке, заполняет в форме нужные поля нажимает "save" возвращается сюда же и здесь уже выбирает фрезерование ну и далее по логике
...
Рейтинг: 0 / 0
02.02.2015, 10:58
    #38869173
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
bald56rus,

RenderAction ?
...
Рейтинг: 0 / 0
02.02.2015, 10:59
    #38869174
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
...
Рейтинг: 0 / 0
02.02.2015, 11:17
    #38869189
bald56rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
MonochromatiqueMonochromatiquebald56rus,

RenderAction ?

http://www.sql.ru/forum/1091968/aps-net-mvc-deystviya-kontrollerov?hl=renderaction
если я правильно понял, то суть метода сводится к тому что в формировать "общее" представление а обрабатывать полученные значения.
P.S.: под общим подразумеваю что будет в едином представлении поля из обоих моделей(материал, инструмент).поправте меня если не правильно понял
...
Рейтинг: 0 / 0
02.02.2015, 14:12
    #38869500
bald56rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
что то не пойму почему не получается
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class CuttersGrades
    {
        public ViewSolidCutters cutters { get; set; }
        public ViewGrade grades { get; set; }
    }
if (ModelState.IsValid)
            {
                CuttersGrades _cutters = new CuttersGrades();
                _cutters.cutters = cutters;
                _cutters.grades = grades;
                return RedirectToAction("DetailsSolid", "Milling",_cutters);
            }


в отладке смотрю _cutters.cutters не null, в DetailsSolid
Код: c#
1.
2.
3.
4.
public ActionResult DetailsSolid(CuttersGrades CuttersGrades, int? page)
        {
                ...
        }

приходит null. кто нибуть подскажите почему?
...
Рейтинг: 0 / 0
03.02.2015, 16:54
    #38870611
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
bald56rusчто то не пойму почему не получается
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class CuttersGrades
    {
        public ViewSolidCutters cutters { get; set; }
        public ViewGrade grades { get; set; }
    }
if (ModelState.IsValid)
            {
                CuttersGrades _cutters = new CuttersGrades();
                _cutters.cutters = cutters;
                _cutters.grades = grades;
                return RedirectToAction("DetailsSolid", "Milling",_cutters);
            }


в отладке смотрю _cutters.cutters не null, в DetailsSolid
Код: c#
1.
2.
3.
4.
public ActionResult DetailsSolid(CuttersGrades CuttersGrades, int? page)
        {
                ...
        }

приходит null. кто нибуть подскажите почему?

Редирект то правильно отрабатывает - как смотрите?
...
Рейтинг: 0 / 0
04.02.2015, 06:51
    #38870936
bald56rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
eJackРедирект то правильно отрабатывает - как смотрите?
ставлю точку останова, запускаю приложение смотрю переменную через отладчик. в методе где происходит "валидация" модели как написал уже переменные не null в методе "DetailыSolid" приходит null
...
Рейтинг: 0 / 0
04.02.2015, 13:06
    #38871307
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
bald56rus,

Конечно, приходит null. Вам нужно почитать чем Get отличается от Post и как их использовать. RedirectToAction - это Get, а потому, передать объект класса передать не получится. Положите _cutter в TemdData перед редиректом, а в DetailsSolid читайте его оттуда.
...
Рейтинг: 0 / 0
04.02.2015, 15:36
    #38871514
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
bald56rus,

Код: c#
1.
return RedirectToAction("DetailsSolid", "Milling", new { CuttersGrades =_cutters })



Вот так должно работать.
...
Рейтинг: 0 / 0
04.02.2015, 15:47
    #38871532
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
eJack,

Вам тоже надо бы почитать про RedirectToAction...
...
Рейтинг: 0 / 0
04.02.2015, 16:53
    #38871611
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
AxeleroneJack,

Вам тоже надо бы почитать про RedirectToAction...
все может быть - последний раз писал реальные вещи в 2011 и там же редирект был, дома вечером посмотрю.

Но что то мне напоминает что я как то так обходился, без всяких костылей типа TemdData
...
Рейтинг: 0 / 0
04.02.2015, 17:05
    #38871627
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
eJack,

Еще можно RouteValueDictionary, но это все равно тот же Querystring
...
Рейтинг: 0 / 0
04.02.2015, 17:08
    #38871632
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
AxeleroneJack,

Еще можно RouteValueDictionary, но это все равно тот же Querystring

Нет конечно, это не совсем так
...
Рейтинг: 0 / 0
04.02.2015, 17:09
    #38871634
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
eJackбез всяких костылей типа TemdData

Нормальные костыли, ингода вполне юзабельные
...
Рейтинг: 0 / 0
04.02.2015, 17:45
    #38871666
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
hVosttAxeleroneJack,

Еще можно RouteValueDictionary, но это все равно тот же Querystring

Нет конечно, это не совсем так

Смысл тот же - передавать key/value пары :)
...
Рейтинг: 0 / 0
04.02.2015, 17:59
    #38871677
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
AxeleroneJack,

Еще можно RouteValueDictionary, но это все равно тот же Querystring


Посмотрел - да передавал? но простые значения, что то типа:

Код: c#
1.
return RedirectToAction("DetailsSolid", "Milling", new { Id=_model.Id})



А саму сущность получал опять же в "DetailsSolid" через
Код: c#
1.
dbContext.Model.find(Id);
...
Рейтинг: 0 / 0
04.02.2015, 18:01
    #38871678
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
hVostteJackбез всяких костылей типа TemdData

Нормальные костыли, ингода вполне юзабельные

+100500 но без фанатизма
...
Рейтинг: 0 / 0
04.02.2015, 18:02
    #38871679
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
eJack,

Да, можно, но передавать таким образом можно только строковые значения.

Модель - да, наверное, и так можно, но при условии, что объект хранится в базе (как в Вашем примере), а такой способ не под каждую задачу подходит.
...
Рейтинг: 0 / 0
04.02.2015, 22:14
    #38871787
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
AxeleroneJack,

Да, можно, но передавать таким образом можно только строковые значения.

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

В данном случае это Id это int.
сдается мне что можно передать и объект класса - ответ кроется в Bind'е параметров - надо покапать.
...
Рейтинг: 0 / 0
05.02.2015, 02:28
    #38871835
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
eJack+100500 но без фанатизма

Да, например, необходимо обеспечить обязательный порядок перехода с одной страницы на другую (или, с одного действие на другое), с передачей внутренних данных без применения сессии, TempData в данном случае самое оно.
...
Рейтинг: 0 / 0
05.02.2015, 13:06
    #38872207
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
eJack,

В данном случае задача передать объект класса ViewSolidCutters, а объект класса передать по RedirectToAction напрямую невозможно.
...
Рейтинг: 0 / 0
05.02.2015, 13:09
    #38872214
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
hVostt,

TempData, по сути, является типом краткосрочной сессии
...
Рейтинг: 0 / 0
05.02.2015, 13:54
    #38872286
eJack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC передача данных между контроллерами
AxeleroneJack,

В данном случае задача передать объект класса ViewSolidCutters, а объект класса передать по RedirectToAction напрямую невозможно.

Если завернуть в RouteValueDictionary объект класса ViewSolidCutters - то он его передаст как параметры

/controller/action/{X}?.........

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


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