Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 23
1

Значение из ViewBag использовать в контролере

20.01.2019, 17:27. Показов 2187. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, как вытянуть значения из ViewBag по отдельности?
Представление
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@{
    ViewBag.Title = "Программа";
}
<div style="text-align: center;">
    @using (Html.BeginForm("Index", "User"))
    {
        @Html.DropDownList("list1",
                         new SelectList(new[] {  "ID", "Username", "Фамилия" }))
 
        @Html.TextBox("TextBox1")
        <input type="submit" name="button" value="Поиск" />}      
</div>
 
@foreach (var user in ViewBag.users)
{
<div>   
    <table width="100%" border="1" bgcolor="#ffcc00" cellpadding="5" cellspacing="1">
              
        <tr>              
            <td>
                <label><b>Id:&nbsp;</b></label>@user.Idu<br>
                <label><b>Username:&nbsp;</b></label> @user.UserName<br>
                <label><b> Имя:&nbsp;</b></label>@user.FirstName &nbsp; @user.LastName<br>
                 <b> @user.Phone</b><br> <label><b>Регион: </b></label>??????<br> 
            </td>
Запрос к базе в контролере

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        public UserModel userModel = new UserModel();
        public MessageModel messageModel = new MessageModel();       
        public PhoneModel phonesModel = new PhoneModel();
 
 
public ActionResult Index(string list1, string TextBox1)
 
        {
            ViewBag.Selected1 = list1;
 
            if (ViewBag.Selected1 == "Username")
            {
                ViewBag.users = userModel.findByUser(TextBox1);       
 
            }
            if (ViewBag.Selected1 == "ID")
            {
                ViewBag.users = userModel.findById(TextBox1);          
            }
            if (ViewBag.Selected1 == "Фамилия")
            {
                ViewBag.users = userModel.findBySur(TextBox1);              
            }
Нужно номер телефона, который получен во ViewBag, отправить в следующий метод, который ищет принадлежность к региону в другой коллекции, а username в третий метод, который ищет доп информацию о пользователе.
База на mongo, как пройтись здесь по нескольким коллекциям сразу, не знаю, метод вот такой
C#
1
2
3
4
5
6
7
8
public List<User> findById(string TextBox1)
        {
            var bQuery = "{ id : " + TextBox1 + "}";           
            var filter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(bQuery);
            var result = userCollection.FindSync(filter).ToList();          
                return result;
           
        }
И еще не понятно, как выводить информацию в таблицу, ведь foreach в foreach вложить не получится в представлении.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2019, 17:27
Ответы с готовыми решениями:

Как правильно использовать ViewBag?
Форумчане, помогите пожалуйста новичку. Вопрос наверное глупый, но никак не могу...

Теряется значение свойства ViewBag
Здравствуйте, коллеги. Есть хорошая онлайн-книга по ASP.NET MVC 4. Дошёл до главы &quot;частичные...

Как передать в ViewBag значение введённое в html-элемент
как передать в ViewBag значение введённое в html-элемент &lt;input type=&quot;text&quot; id=&quot;datepicker&quot; /&gt;...

Lumen - как использовать контролер в контролере?
Я написал &quot;Helper&quot; контроллер, который я хочу использовать в других контроллерах, но я делаю что-то...

5
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
20.01.2019, 23:43 2
Sveta822, в представление нужно передавать полностью сформированные данные. Поэтому вопрос о передаче данных из view не должен стоять. По идее у User уже есть свойства хранящие связанную информацию. Соответственно нужно передавать в View коллекцию User-ов и выводить всю необходимую информацию из каждого объекта.

Цитата Сообщение от Sveta822 Посмотреть сообщение
ведь foreach в foreach вложить не получится в представлении.
Получится
1
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 23
21.01.2019, 17:19  [ТС] 3
Цитата Сообщение от OwenGlendower Посмотреть сообщение
По идее у User уже есть свойства хранящие связанную информацию.
Вот прям не представляю, как вытянуть эти данные из метода

C#
1
  ViewBag.users = userModel.findByUser(TextBox1);
Ничего не могу найти похожего. Сохранить в локальную переменную не получается
И еще не понимаю почему два метода вместе не работают. Если один и методов вынести за фигурные скобки, то оба работают, а так только первый.
C#
1
2
3
4
5
 if (ViewBag.Selected1 == "Username")
            {
             ViewBag.users = userModel.findByUser(TextBox1);           
              ViewBag.message = messageModel.findByUser(TextBox1);          
            }
Добавлено через 2 часа 6 минут
С двумя методами разобралась, со вложенным foreach тоже. Вопрос по ViewBag открыт
0
.NET C#,ASP.NET MVC
Эксперт .NET
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
22.01.2019, 11:22 4
Цитата Сообщение от Sveta822 Посмотреть сообщение
Значение из ViewBag
Прямого доступа нет. Это работает только в одно сторону.

Для того чтобы переделать данные в контроллер используйте гет\пост запросы.
К примеру хорошим вариантом будет HTML форма
1
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 23
23.01.2019, 12:59  [ТС] 5
Цитата Сообщение от lvlkoo Посмотреть сообщение
Для того чтобы переделать данные в контроллер используйте гет\пост запросы.
К примеру хорошим вариантом будет HTML форма
Можно поподробнее?
0
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 23
14.02.2019, 07:46  [ТС] 6
Нашла такой способ. Фамилия передается во второй метод, но, к сожалению, только первая из ViewBag.users, хотя их там может быть и 100. Почему так не понимаю, помогите разобраться. В представление все выводится

C#
1
2
3
4
5
6
7
8
if (ViewBag.Selected1 == "Username")
            {
             ViewBag.users =  from c in userModel.userCollection.AsQueryable<User>() where c.UserName ==(TextBox1) select c;    
               foreach(User u in ViewBag.users)
            {
              ViewBag.message = messageModel.findByUser(u.LastName);          
            }
}
0
14.02.2019, 07:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2019, 07:46
Помогаю со студенческими работами здесь

Как передать в ViewBag, значение с пробелом
Подскажите как передать значение имени стиля состоящее из двух слов с пробелом, через @ViewBag В...

Обработка JSON в контролере
Доброго времени суток, форумчане! В ходе работы с Яндекс API(Directory API) получаю вот такую...

Как сделать проверку в контролере?
Пытаюсь создать небольшое приложение для ребенка. Но что-то окончательно запутался. Суть проблемы...

Symfony2 вызвать контролер в контролере
Хай алл, с фраймворками только начал работать.. Так же namespace, use раньше ни где не использовал,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru