IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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: #C MVC Modal validation

Aktivity
Avatar
Franco Berlusco:28.4.2021 11:35

Dobrý den,
Som začiatočník a pracujem v #C-ASP.NET-MVC na malom projekte, ktorá slúži na evidenciu osôb.

V mojom index.cshtml sa zobrazuje tabuľka záznamov.
Kliknutím na tlačidlo Pridať volám cez javascript odkaz, ktorým sa zobrazí modálny formulár, v ktorom vyplňujem položky.
Po volaní sa mi do divu (id=work) na formulári index načíta obsah (Create.cshtml) a pracujem s nim bez problémov. Fyzicky mám teda dva oddelené súbory Index.cshtml a Create.cshtml. V žiadnom prípade nechcem mať všetko v jednom súbore.

Problém je pri validácii na strane klienta (_ValidationScrip­tsPartial.cshtml).
PROBLÉM č.1:
Ak by som v zdrojáku create.cshtml použil @section Scripts, tak táto časť sa mi cez ajax nepreberie do div-u (work).
Teda celá sekcia @section Scripts je ignorovaná.
PROBLÉM č.2:
Ak nepoužijem v zdrojáku create.cshtml @section Scripts (tak ako je uvedené nižšie), funguje všetko vrátane validácie, ale prehliadač mi zobrazuje upozornenie:

[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.

Prosím, poraďte mi.

Index.cshtml


<form>
<a href="#" class="btn btn-primary userCreate" title="Pridať nového používateľa">Pri­dať</a>
</form>
<div id="work"></div>

@section Scripts {
<script type="text/ja­vascript">

$(document).on("clic­k", '.userCreate', function (e) {
e.preventDefault();

$.ajax({
type: "GET",
url: '@Url.Action("Cre­ate", "User", new { area = "" })',
success: function (msg) {
$("#work").html(msg);
}
});
});
</script>
}

//UserController - udalost v controlleri
[HttpGet]
public ActionResult Create()
{
return View();
}

Create.cshtml


@model Keo2020m.Model­s.UsrNew

@using Microsoft.AspNet­Core.Identity
@using Keo2020m.Areas­.Identity.Data

@inject SignInManager<Ac­countUser> SignInManager

@{
Layout = null;
ViewData["Title"] = "Používatelia";
}

<div id="userCreate­Modal" class="modal fade" role="dialog" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog" role="document" style="width: max-content;">
<div class="modal-content">

<form asp-action="Create">
... editovanie údajov
</form>

</div>
</div>
<partial name="_Valida­tionScriptsPar­tial" />
<script>
$('#userCreate­Modal').modal('show');

//kontrola hned po opusteni udaja
$('input', 'form').blur(fun­ction () { $(this).valid(); }); //kontrola hned po opusteni udaja

</script>
</div>

 
Odpovědět
28.4.2021 11:35
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.