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

Как вернуть в метод контроллера список выделенных пользователей

09.11.2011, 01:57. Показов 3703. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго здравия!
Прошу вашей помощи по вопросу:

Имеется список пользователей и CheckBox для каждого из них.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
 
 
          <% using (Html.BeginForm("List2", "User")) {%>
            <table>
            <%foreach (aspnet_Users item in (IEnumerable<aspnet_Users>)ViewData["users"])
               {%>
                <tr>      
                   <td><%= Html.CheckBox("UserId") %></td> 
                   <td><%= item.UserName %> </td>                   
                  </tr>
            <%} %> 
            </table>              
            <input type="submit" value="add users" />
            <% } %>
<%= Html.ActionLink("К задачам", "List", "Tasks") %>
</asp:Content>
Интересует следующее:
Как вернуть в метод контроллера список выделенных пользователей?
Или подскажите более элегантный метод для добавления.
Изображения
 
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2011, 01:57
Ответы с готовыми решениями:

Вызвать метод контроллера из представления или другого контроллера
Мне нужно по кнопке вызвать метод LogOut в контроллере AccountController. Я пытаюсь сделать так:...

Как вернуть в меню пропавшую опцию добавления Контроллера и Представлений для MVC проекта?
Я столкнулась со следующей проблемой. При работе в VS2015 после установления Microsoft ASP.NET...

Как вернуть пользователей в систему?
по моей ошибке был поврежден реестр, загрузится смог только после смены всех файлов в папке...

Как передать в метод Main массив путей выделенных файлов
Всем привет. У меня такая проблема: программа принимает массив строк(каждая строка это путь к...

7
3 / 3 / 0
Регистрация: 09.07.2011
Сообщений: 9
09.11.2011, 11:29 2
Застряла на этом же. Вот хотела тему создать, но наткнулась на вашу.

Еще хотелось бы расширить вопрос. Можно ли разместить на одной форме, например, сразу две кнопки, которые бы выполняли разные действия с выбранными пользователями, например удалить и добавить? Можно конечно через DropDownList действия передавать в контроллер, но интересно именно по нажатию кнопки.
0
CEO
Эксперт С++
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
09.11.2011, 12:47 3
Лучший ответ Сообщение было отмечено как решение

Решение

vodole1, в Action принимайте параметр int[] UserId, это и будут ваши выбранные пользователи

Добавлено через 4 минуты
lyoka, задаете атрибут name своим кнопкам, бросаете их в одну форму отправки. В соответственном екшене (например имена кнопок "firstBtn" и "secondBtn")
C#
1
public ActionResult SomeAction(string firstBtn, string secondBtn)
строка буден не null для имени той кнопки которая отправила форму
3
3 / 3 / 0
Регистрация: 09.07.2011
Сообщений: 9
09.11.2011, 20:48 4
имеется такой код во вьюшке
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
 @foreach (var k in ViewBag.KeyWordList)
                {
                    
                    <tr>
                        <td>@k.Query</td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td>@ViewBag.SearchSystemList[k.SearchSystemId].Text:&nbsp;@k.Position</td>
                        <td> <input type="checkbox" name="action" value="@k.QueryId" /></td>
                        
                    </tr>
                }
...
 
<input type="submit" value="Удалить"  name="Delete" style="padding: 3px; font-style: normal; font-size: small; font-family: Tahoma;" /><br />
 
<input type="submit" value="Добавить" name="Add" style="padding: 3px; font-style: normal; font-size: small; font-family: Tahoma;" /><br />
и такой код в контроллере
C#
1
2
3
4
        [HttpPost]
        public ActionResult KeyWords(KeyWordSet k, string delete, string add, int[] action)
        {
            if (ModelState.IsValid)
Проблема в том, что если не выбрать ни одного чекбокса, то в контроллере int[] action = null и соотвественно ModelState.IsValid получается false.

Проблема решена размещение во вьюшке @Html.Hidden("action", "0") и теперь action пустым не приходит.

Может есть решение получше?
1
4 / 4 / 0
Регистрация: 03.05.2011
Сообщений: 45
09.11.2011, 21:09  [ТС] 5
Цитата Сообщение от Alligieri Посмотреть сообщение
vodole1, в Action принимайте параметр int[] UserId, это и будут ваши выбранные пользователи
Так не получается.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<% using (Html.BeginForm()) {%>
    //.....
    <table>
            <%foreach (aspnet_Users item in (IEnumerable<aspnet_Users>)ViewData["users"])
               {%>
                <tr>      
                   <td><%= Html.CheckBox("UserId", new { UserId = item.UserId})%></td> 
                   <td><%= item.UserName %> </td>                   
                </tr>
            <%} %> 
    </table>
    <input type ="submit" value =" добавить " />
    <%} %>
Метод контроллера:

C#
1
public ActionResult Add(string Title, string Text, DateTime StartDate, DateTime EndDate, Guid[] UserId)
Выдает исключение, что UserId null
1
CEO
Эксперт С++
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
09.11.2011, 22:09 6
vodole1, попробуйте

XML
1
<input type="checkbox" name="UserId" value="<%= item.UserId %>"/>
2
3 / 3 / 0
Регистрация: 09.07.2011
Сообщений: 9
09.11.2011, 22:35 7
Цитата Сообщение от vodole1 Посмотреть сообщение
Так не получается.
Выдает исключение, что UserId null
Все работает. Важно класть разные значения в Value.
И используйте вместо Html хэлпера обычный html checkbox, как написал Alligieri.
1
49 / 49 / 12
Регистрация: 24.10.2012
Сообщений: 434
04.11.2012, 09:24 8
Цитата Сообщение от Alligieri Посмотреть сообщение
vodole1, попробуйте

XML
1
<input type="checkbox" name="UserId" value="<%= item.UserId %>"/>
у меня аналогично работает только:

HTML5
1
<input type="checkbox" name="AnsvId" value=@item.id_ansver />
но как заставить работать:
HTML5
1
@Html.CheckBox("AnsvId", new { AnsvId = item.id_ansver })
в контролере:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 [HttpPost]
        public ActionResult Thanks2(int[] AnsvId)
        {
            List<string> lst = new List<string>();
 
            foreach (int ansver_id in AnsvId)
            {
                lst.Add(ansver_id.ToString());
            }
 
            ViewBag.Lst = lst; 
 
            return View();
 
        }

?

выдает ошибку не задана ссылка на экземпляр объекта
0
04.11.2012, 09:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2012, 09:24
Помогаю со студенческими работами здесь

Как вызвать метод контроллера
Есть вопрос: Как вызвать метод контроллера из представления или Как при загрузке начальной...

Как перенести список выделенных файлов из FileListBox в ListBox или в TextBox
1)как перенести список выделеных(!) файлов из FileListBox в просто listbox или в textbox? (нужен...

Как вызвать метод хаба SignalR из контроллера?
Как вызвать метод хаба SignalR из контроллера? Перепробовал уже множество вариантов - на клиенте...

Как обработать метод контроллера если не найдена запись в бд
К примеру у нас есть метод в контроллере, который принимает номер страницы. Если метод сервиса не...


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

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