• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Validacja formularza po jego wysłaniu za pomocą ajaxa

Object Storage Arubacloud
0 głosów
176 wizyt
pytanie zadane 23 września 2019 w C# przez tomek2323 Bywalec (2,050 p.)

Problem polega na tym , że jeżeli nie używam ajaxa to validacja po stronie klienta działa i formularz nie zostaje wysłany kiedy dołączam kod js to niestety zawsze wysyła próbowałem różnych funkcji valid() zawsze zwraca true itp zwracania widoku json niestety wtedy zwraca albo cały widok w miejscu gdzie normalnie jest partialview albo przy json nic nie pojawiają się komunikaty o błędach

 public IActionResult ChoosePlace()
        {
            SelectPlaceViewModel model = new SelectPlaceViewModel();
            return View("ChoosePlace",model);
        }



       

        public IActionResult ShowPlaces(SelectPlaceViewModel model)
        {

            if (ModelState.IsValid)
            {
                List<Place> PlacesList = repository.SelectPlaces(model);

                return PartialView(PlacesList);
            }
            else
            {
                List<Place> PlacesList = new List<Place>();
               
               
                return View("ChoosePlace",model);
            }

        }





a tu widok 


@model SelectPlaceViewModel

@{
    ViewData["Title"] = "ChoosePlace";
    Layout = "~/Views/Shared/_Layout.cshtml";
}



<div class="container">
    <div class="row text-center">
        <div class="col-lg-12">
            <h2>Wybierz Miejsce Wizyty</h2>
        </div>
    </div>

    <div>@DateTime.Now</div>

    <div class="row">
        <div class="col-lg-12">
          
            <form id="SelectPlace" asp-action="ShowPlaces" asp-controller="Appointment">
                <div class="row">
                    <div class="col-lg-4 form-group ">
                        <div><span asp-validation-for="Country" class="text-danger"></span></div>
                        <lable>Kraj</lable>
                        <input name="Country" class="form-control">
                    </div>
                </div>
                <div class="row">
                    <div class="col-lg-4 form-group ">
                        <div><span asp-validation-for="City" class="text-danger"></span></div>
                        <lable>Miasto</lable>
                        <input name="City" class="form-control">
                    </div>
                </div><div class="row">
                    <div class="col-lg-4 form-group ">
                        <div><span asp-validation-for="Street" class="text-danger"></span></div>
                        <lable>Ulica</lable>
                        <input asp-for="Street" class="form-control">
                    </div>
                </div>
                <div class="row">
                    <div class="col-lg-4 form-group ">
                        <div><span asp-validation-for="BuildingNumber" class="text-danger"></span></div>
                        <lable>Numer Budynku</lable>
                        <input asp-for="BuildingNumber" class="form-control">
                    </div>
                </div>
                <div class="row">
                    <div class="col-lg-4 form-group ">
                        <div><span asp-validation-for="Room" class="text-danger"></span></div>
                        <lable>Pokój</lable>
                        <input asp-for="Room" class="form-control">
                    </div>
                </div>
                <div class="row">
                    <div class="col-lg-4 form-group ">
                        <button type="submit" id="Search">Szukaj</button>
                    </div>
                </div>

            </form>

            <div class="row">
                <div class="col-lg-4 form-group ">
                    <a class="btn btn-primary" asp-action="AddPlace">Dodaj Miejsce</a>
                </div>
            </div>

        </div>
    </div>
    <div class="row">
        <div id="SelectResult" class="col-lg-12">
            <h2>Brak Wyników</h2>
        </div>
    </div>
</div>









@section Scripts
    {





<script type="text/javascript">

  
   

           var frm = $('#SelectPlace');

           $("#SelectPlace").validate({
               submitHandler: function (form) { // fires only when form is valid
                   // your ajax here

                   alert("Works");
                   $.ajax({
                       type: frm.attr('method'),
                       url: frm.attr('action'),
                       data: frm.serialize(),
                       success: function (data) {
                           //$.validator.unobtrusive.parse("#SelectPlace");
                           $("#SelectResult").html(data);
                           alert("Submit");
                       },
                       error: function (data) {
                           console.log('An error occurred.');
                           console.log(data);
                           alert("Error");
                       },
                   });
                   return false;
               }
    });

   
        </script>



widok częściowy zwracany po poprawnym wysłaniu formularza który działa


@model List<Place>

    
@{
   
}


<div class="row">
    <table class="table table-bordered">
        <thead>
            <tr>
                <th>Nazwa</th>
                <th>Kraj</th>
                <th>Miasto</th>
                <th>Ulica</th>
                <th>Nr Budynku</th>
                <th>Pokój</th>
                <th></th>
            </tr>
        </thead>
        <tbody>



            @foreach (var place in Model)
            {
                <tr>
                    <td>@place.PlaceName</td>
                    <td>@place.Country</td>
                    <td>@place.City</td>
                    <td>@place.Street</td>
                    <td>@place.BuildingNumber</td>
                    <td>@place.Room</td> 
                    <td><a class="btn btn-primary" asp-action="AddAppointment" asp-route-id="@place.PlaceId">Wybierz</a></td>
                </tr>
            }
        </tbody>

    </table>




</div>



 

1 odpowiedź

0 głosów
odpowiedź 28 września 2019 przez antyprogramista Bywalec (2,120 p.)
Nie jestem programistą .net, ale może dopytam i rozwieję wątpliwości:

Ten Javascript z funkcją valid() jest ładowany automatycznie przy ładowaniu strony, czy w momencie naciśnięcia buttona do wysłania danych formularza?

Podobne pytania

0 głosów
1 odpowiedź 574 wizyt
pytanie zadane 17 maja 2017 w JavaScript przez Marduczek Użytkownik (520 p.)
0 głosów
1 odpowiedź 1,180 wizyt
0 głosów
0 odpowiedzi 137 wizyt
pytanie zadane 12 listopada 2019 w PHP przez Cysiu Początkujący (270 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...