ASP .NET MVC5 - Submit Modal window - przekazuje pusty model do metody POST

0

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>&copy; @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):
screenshot-20210819181054.png

I obecnie, nie jestem w stanie znaleźć przyczyny dlaczego nie przekazuje mi danych z formatki do metody Postowej :(

0

A jesteś pewien że wszystko prawidlowo wysylasz i odbierasz? Czemu kiedy chcesz pokazać nowy view nie przekazujesz model'u User'a tylko nowy obiekt?

0

Może właściwości w UserModel nie mają setterów albo dostęp do nich jest ograniczony.

0

@Mondonno: > Czemu kiedy chcesz pokazać nowy view nie przekazujesz model'u User'a tylko nowy obiekt? Akurat w POST dałem taką swoją "zaślępkę". Najważniejszy problem, to jak pisałem w metodzie POST mam model z pustymi propkami
@Kokoniłaj > Model jest bardzo prosty :
screenshot-20210829141242.png

Przykład jest banalny, żadnych skomplikowanych elementów tutaj nie ma. To co widzicie to niemalże 90% całości kodu - specjalnie przygotowałem uproszczony schemat, by zobrazować problem

0

Czy nie trzeba dopisać atrybutu [FromBody] albo [FromForm] przed UserModel model?

1 użytkowników online, w tym zalogowanych: 0, gości: 1