NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Validace checkboxu v .NET Core

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Jaroslav Smrž:2.2.2020 21:40

Jelikož normálně frontend nedělám, tak jsem se celkem zasekl na triviální záležitosti a to zastavení odeslání formuláře a vyhození chyby, když není zaškrtnutý checkbox - zkrátka něco typu "souhlasím se smluvními podmínkami". Nevíte někdo, jestli má .NET na to již nějakou validaci hotovou nebo si ji musím napsat sám v JS, případně jak jinak by to šlo ošetřit? Zkoušel jsem použít range, který fungoval ve verzi 2, ale v Core 3.1 tudy cesta nevede, formulář se úspěšně odešle, i když je checkbox false.

Model:

[Display(Name = "Souhlasím")]
        [Range(typeof(bool), "true", "true", ErrorMessage = "Musíte souhlasit s VOP")]
        public bool Agree { get; set; }

Controller:

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("Id,Name,Lastname, ... ,Agree")] Order order)
        {
            if (ModelState.IsValid)
            {
                _context.Add(order);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(order);
        }

View:

<div class="form-group form-check">
                <label class="form-check-label">
                    <input class="form-check-input" asp-for="Agree" /> @Html.DisplayNameFor(model => model.Agree) s <a asp-controller="ObchodniPodminky" asp-action="Index" target="_blank">VOP</a>
                    <span asp-validation-for="Agree" class="text-danger"></span>
                </label>
            </div>

Pro validaci používám již připravené scripty JQuery-validate, kde jsem se snažil chvilku hledat, ale mají okolo 1600 řádků, takže dotaz do fóra je podstatně rychlejší než to procházet.

Předem díky za jakékoliv rady

Zkusil jsem: Range od true do true

Chci docílit: Zabránit odeslání formuláře, když je checkbox false.

Odpovědět
2.2.2020 21:40
/* Life runs on code */
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 1 zpráv z 1.