NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
petrekov
Člen
Avatar
petrekov:27.2.2018 10:32

Zdravím mám takový drobný problém. Dělal jsem list checkboxů dle tohoto návodu zde všechno funguje jak má, ale potřebuju takovou drobnost. Potřebuji mít více skupin těchto listů checkboxů. V příkladě tohoto tutoriálu by to bylo, že by byly nejenom filmy a jejich žánry, ale i knihy/písničky/hry co já vím a pod každým zabaleno ještě onen list žánrů. Potřebuji takový list listů checkoboxů, už jsem to dělal, ale z nějakého důvodu ač mi se mi formulář vykresluje dobře, data mi nechodí zpět do post metody, nevíte co s tím? Níže moje kódy.

  • jeden checkbox View v EditorTemplates
@model Hartmann.Mes.Web.Models.CheckBoxListItem

@Html.HiddenFor(x => x.ID)
@Html.CheckBoxFor(x => x.IsChecked)
@Html.LabelFor(x => x.IsChecked, Model.Display)
<br />
  • třída k tomu checkboxu
namespace Hartmann.Mes.Web.Models
{
    public class CheckBoxListItem
    {
        public int ID { get; set; }
        public string Display { get; set; }
        public bool IsChecked { get; set; }
    }
}
  • pohled vykreslující jednotlivé kategorie (filmy,knihy) takové obalení
@model Hartmann.Mes.Web.Models.ListOfCheckBoxListItems

@Html.HiddenFor(x => x.ID)
@Html.LabelFor(x => x.Display, Model.Display)
<hr />
@Html.EditorFor(x => x.listOfCheckboxes)
<br />
  • třída k tomu
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Hartmann.Mes.Web.Models
{
    public class ListOfCheckBoxListItems
    {
        public string ID { get; set; }
        public string Display { get; set; }
        public List<CheckBoxListItem> listOfCheckboxes;

        public ListOfCheckBoxListItems()
        {
            listOfCheckboxes = new List<CheckBoxListItem>();
        }
    }
  • Pohled s formulářem
<div class="well">
    @Html.EditorFor(xo => xo.listOfLists)
</div>
  • Metoda v controlleru
public IActionResult Create()
       {

           CreateViewModel model = new CreateViewModel();
           var allModuleAccessLevels = _context.ModuleAccessLevels.ToList();
           var allModules = _context.Modules.ToList();
           var listOfLists = new List<ListOfCheckBoxListItems>();
           foreach (var module in allModules)
           {


               //Vytvoření Checkbox listu pro výběr ModelAccessLevelů
               var checkBoxListItems = new List<CheckBoxListItem>();
               foreach (var access in allModuleAccessLevels)
               {
                   if (access.ModuleId == module.Id)
                   {
                       checkBoxListItems.Add(new CheckBoxListItem()
                       {
                           ID = access.Id,
                           Display = access.Name,
                           IsChecked = false
                       });
                   }
               }
               listOfLists.Add(new ListOfCheckBoxListItems()
               {
                   ID = module.Id,
                   Display = module.Name,
                   listOfCheckboxes = checkBoxListItems,
               });
           }

           model.listOfLists.AddRange(listOfLists);
          // model.listOfLists = listOfLists;
           return View(model);
       }

Jak je vidět na obrázku, formulář se vygeneruje zcela správně, jak by měl. Dva listy listů checkboxů, ale problém je, že při postu mi v modelu nechodí jednotlivé checkboxy, jen Id a Display jednotlivých listů, ale list checkboxů v každé té kategorii je prázdný, taky na obrázku.

  • Hlavička post metody v controlleru
[ValidateAntiForgeryToken]
        [HttpPost]
        public async Task<IActionResult> Create(CreateViewModel model)
        {
  • původně obsahovala i Bind, ale pro testování sem ho dal pryč.
  • Pokud někdo tušíte, proč mi data z formuláře dobře nechodí, budu velice rád za radu, asi to bude nějaká prkotina nebo přepis, ale já už opravdu netuším, vím že mi to dřív jelo, ale o ty kody jsem přišel a teď se k tomu nedokážu nijak dostat....
Editováno 27.2.2018 10:34
Odpovědět
27.2.2018 10:32
Do diskuze musí jít člověk připraven ztratit svůj názor
Avatar
petrekov
Člen
Avatar
petrekov:28.2.2018 8:18

Tak jo po několika hodinách jsem problém vyřešil a málem jsem si vytrhal vlasy, jaká prkotina to byla. Jediným problémem je ListOfCheckBox­ListItems, kde u listu chybí {get;set;} ..... takovýho času ztracenýho kvůli takový triviálnosti to je prostě, ach jo...

Nahoru Odpovědět
28.2.2018 8:18
Do diskuze musí jít člověk připraven ztratit svůj názor
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.