Wywoływanie ajax za pomocą JS i przekazanie parametru

0

Witam
Piszę aplikacje w ASP.NET MVC i potrzebuje pomocy. Chcę wywołać skrypt napisany w AJAX za pomocą JS, który ma dwa parametry, które są nazwami kolumn z tabel. Nazwałem parametry IdProduct i Id. Nie wiem w jaki sposób to wywołać czy to w ogóle możliwe.
Mam plik JS z parametrami i skrypt na widoku.
Funkcja JS, za pomocą której mam wywołaj skrypt js i przekazać do niego dwa parametry w nawiasie.

function eventClick(Id, IdProduct) {
    
}

Widok z nieukończonym skryptem:

    <h4>Składniki</h4>
    <table class="table">
        @foreach (var iteming in Model.IngredientsVM)
        {

            <tr>
                <td>
                    @Html.DisplayFor(modelItem => iteming.Name)
                </td>
                <td>
                    <button id="@iteming.Id" onclick="eventClick()">Dodaj</button>
                </td>
            </tr>
        }
    </table>
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        <div>
            <input type="submit" value="Stwórz" />
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index", "Products")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    <script src="~/Scripts/eventClick.js" type="text/javascript"></script>
    <script type="text/javascript">
        $("");function addIngredient() {
                $.ajax({
                    type: "GET",
                    url: 'Recipes/AddIngredient',
                    data: {},
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function () {

                    }
                })
            }
        </script>
}
0

Możesz to zbudować na kilka sposobów. Chociażby wysyłając obiekt do kontrolera, który zwróci PartialView (czyli przeniesiesz tą całą pętle do innego widoku) - zbudowany html wraz z Twoją kolekcją. Wówczas do funkcji success możesz przekazać cały zbudowany html z serwera np poprzez (gdzie container to id jakiegoś znacznika html):

...
 success: function (result) {
        $('#container').html(result)
 }
...

Jak lubisz sobie pogrzebać w JS to możesz zwracać wyniki w postaci kolekcji JSON i zbudować sobie tabelę bez zwracania całego html'a z serwera.
ASP.NET MVC udostępnia również helper'a do formularza wykorzystującego AJAX - > @Ajax.BeginForm - tu masz przykład https://dev.to/skipperhoa/asp-net-mvc-5-partial-view-with-ajax-form-2fnf

0

Tak jak wspomniał @mariano901229, tylko musisz pamiętać, że używając @Ajax.BeginForm jeśli będziesz miał jakieś kontrolki kalendarza / list rozwijalnych (nie defaultowe) to często będziesz musiał je na nowo zainicjalizować po powrocie z kontrolera

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