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 (_ValidationScriptsPartial.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 to 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">Pridať</a> </form> <div id="work"></div> @section Scripts { <script type="text/javascript"> $(document).on("click", '.userCreate', function (e) { e.preventDefault(); $.ajax({ type: "GET", url: '@Url.Action("Create", "User", new { area = "" })', success: function (msg) { $("#work").html(msg); } }); }); </script> }
//UserController - udalost v controlleri
[HttpGet]
public ActionResult Create()
{
return View();
}
Create.cshtml
@model Keo2020m.Models.UsrNew
@using Microsoft.AspNetCore.Identity
@using Keo2020m.Areas.Identity.Data
@inject SignInManager<AccountUser> SignInManager
@{
Layout = null;
ViewData["Title"] = "Používatelia";
}
<div id="userCreateModal" 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="_ValidationScriptsPartial" />
<script>
$('#userCreateModal').modal('show');
//kontrola hned po opusteni udaja
$('input', 'form').blur(function () { $(this).valid(); }); //kontrola hned po opusteni udaja
</script>
</div>