Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Využij akce až 80 % zdarma při nákupu e-learningu - více informací. Zároveň pouze tento týden sleva až 80 % na e-learning týkající se Swift

Diskuze: Validace checkboxu v .NET Core

Aktivity
Avatar
Jaroslav Smrž
Redaktor
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.