Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# ASP.NET MVC

Войти
Регистрация
Восстановить пароль
 
nupas
0 / 0 / 0
Регистрация: 09.11.2014
Сообщений: 32
#1

Получение массива чекбоксов со View в Controll - C# MVC

25.12.2016, 21:55. Просмотров 412. Ответов 4
Метки нет (Все метки)

Доброго времени суток. Сабж. Кода даже примерного нет, ибо как-то совсем не представляю как это делать. Совсем наброски

C#
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
26
27
28
29
30
31
@using (@Html.BeginForm())
{
    @Html.LabelFor(model => model.name)
    @Html.EditorFor(model => model.name)
 
    <br />
    @Html.HiddenFor(model => model.id)
    @Html.LabelFor(model => model.telephone)
    @Html.EditorFor(model => model.telephone)<br />    
 
    List<pepe.Models.Product> products = ViewBag.Products;
 
    var productInShop = new List<pepe.Models.Product>();
    var indexOfProducts = new List<int>();
 
    foreach(var pr in Model.products)
    {
        productInShop.Add(pr);
        indexOfProducts.Add(pr.id);
    }
 
    foreach (var pr in products)
    {
        var check = indexOfProducts.Contains(pr.id);
        var checkText = check ? "checked" : "";
        <input type="checkbox" checked="@check" name="Producr" @checkText value="@pr.id">
        @pr.name<br>
    }
 
    <input type="submit" value="Да" />
}
Думаю, что-то такое во view будет, а как мне получить теперь массив чекбоксов со значениями. У меня получается в магазине надо выбрать набор продуктов чекбоксами.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 public ActionResult Edit(int? id)
        {
            Shop shop = db.shops.Find(id);
 
            ViewBag.Products = db.products.ToList();
 
            return View(shop);
        }
 
        [HttpPost]
        public ActionResult Edit(Shop sh, /*??*/)
        {
            
 
            return RedirectToAction("Index");
        }
Прошу совета
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2016, 21:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Получение массива чекбоксов со View в Controll (C# MVC):

Получение данных в модель из View посредством Html.CheckBoxFor - C# MVC
Господа! Прошу помощи! Тема такая: с помощью хелпера Html.CheckBoxFor задаю некий динамический чекбокс и считываю его состояние в...

Как передать параметры из одного View в EditorFor другого View - C# MVC
Здравствуйте. Есть 2 view, первое просто отображает данные, 2 должно их редактировать, в 1 view есть текст, необходимо передать этот текст...

Можно ли передать несколько View во View - C# MVC
Вопрос новичка можно ли передать несколько View во View ? Дело в том что мне нужно передать перечисление одной таблицы во View и...

view во view Html.RenderPartial - C# MVC
Добрый день! Такая ситуация, в строго типизированном представлении (запись блога) нужно реализовать форму для отправки комментария. Вот...

Как во view получить данные из контроллера в формате Json или javascript-массива? - C# MVC
Здравствуйте! Есть view в которой у меня есть раздел &lt;script&gt;&lt;/script&gt; . Там я создаю таблицу (grid) при помощи фреймворка Ext Js. Но не...

получение массива нескольких выбранных чекбоксов с последующей записью в файл - PHP
Здравствуйте! Знакомлюсь с PHP, поэтому буду рад любым советам ) В форме есть несколько чекбоксов: &lt;input type='checkbox' name='color'...

4
lvlkoo
.NET C#,ASP.NET MVC
406 / 364 / 126
Регистрация: 16.10.2010
Сообщений: 1,521
Завершенные тесты: 2
26.12.2016, 13:20 #2
Добавтьте в модель

C#
1
public bool[] Check {get; set;}
Затем в представлении можно использовать

HTML5
1
2
3
4
for(int i = 0, i < = Model.products.Count; i++)
{
    @Html.CheckBoxFor(m => m.Check[i]);
}
0
Serg34
89 / 89 / 19
Регистрация: 20.09.2014
Сообщений: 411
Записей в блоге: 3
Завершенные тесты: 1
05.06.2018, 11:54 #3
lvlkoo, Насколько я понимаю, этот хелпер не генерит скрытый input
HTML5
1
<input name="myCheckbox" type="hidden" value="false">
, который отвечает за передачу значений "false" если CheckBox отжат.
У меня получается массив составляется только из значений "true".
То есть к примеру вместо { true, true, false, true } в контроллер приходит { true, true, true }, а если добавить это поле, то приходит { true, false, true, false, false, true, false }.
Никак не пойму как исправить. Добавлять свойство public bool[] Check {get; set;} будет очень проблематично и костыльно.
Прошу помочь.
0
insite2012
Модератор
Эксперт .NET
4772 / 3731 / 902
Регистрация: 12.10.2013
Сообщений: 10,946
Записей в блоге: 2
05.06.2018, 12:31 #4
Цитата Сообщение от Serg34 Посмотреть сообщение
Насколько я понимаю, этот хелпер не генерит скрытый input
По моему все как нужно...
C#
1
2
3
4
5
6
7
8
9
10
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace MvcApplication2.Models {
    public class Product {
        public bool[] Values { get; set; }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
 
using MvcApplication2.Models;
 
namespace MvcApplication2.Controllers {
    public class HomeController : Controller {
        //
        // GET: /Home/
 
        public ActionResult Index() {
            Product p = new Product {
                Values = new[] { true, true, false, true, false }
            };
            return View(p);
        }
 
    }
}
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@model MvcApplication2.Models.Product
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        @for (int i = 0; i < Model.Values.Length; i++) {
            @Html.CheckBoxFor(m => m.Values[i])
        }
    </div>
</body>
</html>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
<input checked="checked" data-val="true" data-val-required="Требуется поле Boolean." id="Values_0_" name="Values[0]" type="checkbox" value="true" /><input name="Values[0]" type="hidden" value="false" /><input checked="checked" data-val="true" data-val-required="Требуется поле Boolean." id="Values_1_" name="Values[1]" type="checkbox" value="true" /><input name="Values[1]" type="hidden" value="false" /><input data-val="true" data-val-required="Требуется поле Boolean." id="Values_2_" name="Values[2]" type="checkbox" value="true" /><input name="Values[2]" type="hidden" value="false" /><input checked="checked" data-val="true" data-val-required="Требуется поле Boolean." id="Values_3_" name="Values[3]" type="checkbox" value="true" /><input name="Values[3]" type="hidden" value="false" /><input data-val="true" data-val-required="Требуется поле Boolean." id="Values_4_" name="Values[4]" type="checkbox" value="true" /><input name="Values[4]" type="hidden" value="false" />    </div>
 
<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
    {"appName":"Chrome","requestId":"2148beb4eaac440c80f933d0aa9a8524"}
</script>
<script type="text/javascript" src="http://localhost:6455/c35b63449c984490bd794bcda12f6687/browserLink" async="async"></script>
<!-- End Browser Link -->
 
</body>
</html>
1
Serg34
89 / 89 / 19
Регистрация: 20.09.2014
Сообщений: 411
Записей в блоге: 3
Завершенные тесты: 1
05.06.2018, 13:12 #5
Дело было в том, что параметр name нужно было писать с индексом
HTML5
1
2
<input checked="checked" data-val="true" data-val-required="Требуется поле Boolean." id="Values_0_" name="Values[0]" type="checkbox" value="true" />
<input name="Values[0]" type="hidden" value="false" />
Тогда все нормально работает
0
05.06.2018, 13:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2018, 13:12
Привет! Вот еще темы с ответами:

Получение координат View во время анимации - Программирование Android
Требуется во время выполнения анимации обработать клик по вьюхе, которая анимируется или каким-то образом имитировать клик и передать его...

Scroll на User controll - C#
Доброго времени суток. Сабж, добавляю юзер контрол на форму, но он может выходить за рамки, т.к. там ширина зависит от того сколько...

Программа вылетает при создании массива чекбоксов - C++ Builder
Создаю динамически чекбоксы, и при написании этой строчки SelectThings = new TCheckBox(Form1); программa выдала ошибку. Если...

В чем разница (View view) и (View v) - Программирование Android
Я только начинаю изучать программирование под андроид (до этого вобще программированием не занимался), по гуглу удалось найти только...


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

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

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