Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
vodole1
4 / 4 / 0
Регистрация: 03.05.2011
Сообщений: 45
1

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

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

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

Имеется список пользователей и 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 01:57
Ответы с готовыми решениями:

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

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

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

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

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

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

Еще хотелось бы расширить вопрос. Можно ли разместить на одной форме, например, сразу две кнопки, которые бы выполняли разные действия с выбранными пользователями, например удалить и добавить? Можно конечно через DropDownList действия передавать в контроллер, но интересно именно по нажатию кнопки.
0
Alligieri
CEO
Эксперт С++
2254 / 1244 / 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
lyoka
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
vodole1
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
Alligieri
CEO
Эксперт С++
2254 / 1244 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
09.11.2011, 22:09 6
vodole1, попробуйте

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

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

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

Как в AuthorizationFilterAttribute узнать какой метод контроллера выполняется?
Привет! Действия происходят в Web API (подходящего раздела я не нашел, поэтому создаю тему в...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru