Cześć, we froncie używam biblioteki UIKit i obecnie bawię się w okna modalne. Napotkałem problem którego nie jestem w stanie rozwiązać. Kod jest bardzo podstawowy, a to z racji, aby pokazać jak najprościej istotę błędu.
W _Layout.cshtml posiadam taki kod :
@using (Html.BeginForm("", "", FormMethod.Post, new { id = "layoutForm" }))
{
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
}
(Usunąłem zbędne elementy by pokazać samą istotę). A więc cały RenderBody otoczyłem BeginForm (akcję, oraz kontrolery do których ma strzelać ustawiam w dalszym etapie za pomocą JSów).
HomeController:
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View("Index", new UserModel());
}
[HttpPost]
public ActionResult SubmitModal(UserModel model)
{
return View("Index", new UserModel());
}
}
A więc pierwotnie klikając na przycisk przenosi mnie do metody Index (HttpGet) gdzie inicjalizuje UserModel (nie ważna jest jego zawartość).
Natomiast po kliknięciu na późniejszym modalu przycisku chcę aby przeniosło mnie do metody SubmitModal (Post).
Widok Index.cshtml:
<a class="uk-button uk-button-default" id="openModalWindowBtn">Open</a>
<div id="modalWindow" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-modal-body uk-margin-auto-vertical">
<button class="uk-modal-close-default" type="button" uk-close></button>
@Html.Label("Login")
@Html.TextBoxFor(model => model.Login)
@Html.Label("Haslo")
@Html.TextBoxFor(model => model.Password)
<button type="button" data-toggle-url="@Url.Action("SubmitModal", "Home")" id="submitFormBtn">Submit Form</button>
</div>
</div>
<script>
$('#openModalWindowBtn').click(function () {
UIkit.modal('#modalWindow').show();
});
$('#submitFormBtn').click(function () {
var actionLink = $(this).attr("data-toggle-url");
console.log(actionLink);
$("#layoutForm").attr('action', actionLink);
$("#layoutForm").submit();
});
</script>
Klikając przycisk na modalu Submit For wywołuje się JSowy "click" gdzie pobieram ustawiony link pod który powinien mi submit strzelić.
Ale w przypadku gdy uzupełnie textboxy Login oraz Password a następnie kliknę Submit Form w metodzie Post otrzymuję mimo wszystko pola Password oraz Login jako null (załącznik):
I obecnie, nie jestem w stanie znaleźć przyczyny dlaczego nie przekazuje mi danych z formatki do metody Postowej :(