Ошибка при отправке параметров на контроллер через @Url.Action в JQuery

Я работаю над MVC проект, и я пытался отправить некоторые параметры на мой контроллер в JQuery с помощью @Url.Action,

HTML код:

<button class="btn btn-white btn-sm demo1" data-id='@item.TeamID'>Delete</button>

Код JQuery:

    $(document).ready(function () {
        $('.demo1').click(function (event) {
            swal({
                title: "Are you sure?",
                text: "You will not be able to recover this team!",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Yes, delete it!",
                closeOnConfirm: false
            }, function () {
                var data = event.data;
                var id = data.id;
                var url = '@Url.Action("Delete", "Teams", new { id = "__param__" })';
                window.location.href = url.replace('__param__', encodeURIComponent(id));

                swal("Deleted!", "Your team has been deleted.", "success");
            });
        });
    });

Однако метод "Удалить" в контроллере команд не запускается. Я что-то пропустил?

ОБНОВЛЕНИЕ: кнопка HTML находится внутри foreach цикл:

@foreach (var item in Model)
{
    <tr>
          <td>
              @Html.DisplayFor(modelItem => item.TeamName)
          </td>
          <td>
              @Html.DisplayFor(modelItem => item.TeamInits)
          </td>
          <td>
              @Html.ActionLink("Edit", "Edit", new { id = item.TeamID }, new { @class = "btn btn-white btn-sm" })
              <button class="btn btn-white btn-sm demo1" data-id='@item.TeamID'>Delete</button>
          </td>
      </tr>
 }

2 ответа

Решение

Используйте свойство HTMLElement.dataset или .data() читать обычай data-* Значение префиксного атрибута.

$(document).ready(function () {
    $('.demo1').click(function (event) {            
        var id = this.dataset.id; 
        //OR
        var id = $(this).data('id');

        //Rest of the code
        swal();
    });
});

Я обычно пробую ниже кодовый трюк. Когда что-то идет не так, как это.

Добавьте ниже код в вас Global.asax.cs Файл и Поместите отладчик внутри метода, так что он будет срабатывать при возникновении исключения.

protected void Application_Error(object sender, EventArgs e)
{ 
    Exception exception = Server.GetLastError();
    string ex = exception.Message; // Here you will get to know what is going wrong
}

Сообщение об исключении или трассировка стека предоставят достаточно информации для исправления ошибок.

Даже если его запрос с Jquery / Razor Html страницы ошибки, у вас будет достаточно информации.

Надеюсь это поможет!!!

Другие вопросы по тегам