Отправка данных на контроллер с помощью ajax - PullRequest
0 голосов
/ 01 октября 2018

Прежде всего, как разработчик выигрышных форм, у меня нет большого опыта в веб-разработке.Я стараюсь изо всех сил, чтобы освоить его

У меня есть две таблицы TOURNAMENTS_M (Master) и TOURNAMENTS_D (detail) с контроллерами скаффолда и представлением.

Я отредактировал мастер-таблицы Создать / и отредактировать представления так, чтобы я мог также отображать дочерние записи

enter image description here

КогдаЯ нажимаю кнопку удаления, я вызываю следующую функцию

function DeleteDetail(pId) {
    const con = confirm("are you sure ?");


    if (con === true) {

        $.ajax({
            url: "/TOURNAMENTS_M/Delete",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data:
                { id: pId }
            })
            .done(function (result) {
                alert("Succeed");
            })
            .fail(function (result) {
                alert("I failed :'( ");
            });

    }
}

, но все, что я получаю, это сообщение об ошибке :( что мне здесь не хватает? Я действительно ценю любую помощь, пытаясь заставить эту работу часами

PS Я использую mvc core

ОБНОВЛЕНИЕ:

enter image description here

public async Task<IActionResult> Delete(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var tOURNAMENTS_M = await _context.TOURNAMENTS_M
            .FirstOrDefaultAsync(m => m.TM_ROWID == id);
        if (tOURNAMENTS_M == null)
        {
            return NotFound();
        }

        return View(tOURNAMENTS_M);
    }

вот как я звонюфункция

@if (Model != null)
{

    var i = 0;
    foreach (var detail in Model.TOURNAMENTS_D)
    {

    <tr>

        <td> <input type='hidden' name="TD_LEVEL" id='@("TD_LEVEL")@i' value="@detail.TD_LEVEL" />@detail.TD_LEVEL </td>

        <td> <input type='hidden' name="TD_SB" id='@("TD_SB")@i' value="@detail.TD_SB" />@detail.TD_SB </td>

        <td> <input type='hidden' name="TD_BB" id='@("TD_BB")@i' value="@detail.TD_BB" />@detail.TD_BB </td>


        <td>
            <a asp-action="Edit" asp-route-id="@detail.TD_ROWID">Edit</a> |

            <button onclick="DeleteDetail(@detail.TD_ROWID) "  class="btn btn-primary">Remove</button>

        </td>
    </tr>
        i++;
    }

    //"<td><a id ='myRemove' data-itemId='0'  class='btn btn-primary'>Remove</a ></td> ";
}

1 Ответ

0 голосов
/ 02 октября 2018

Поскольку мое предложение в комментариях сработало, я предоставлю немного больше информации:

Поскольку вы используете MVC Web Api из коробки, это RESTful API и, следовательно, типы методов очень важны.

Вы пытаетесь выполнить действие удаления, для которого требуется тип запроса «DELETE» в соответствии с рекомендациями API RESTful.MVC Web Api сопоставляет этот метод с методом Delete из коробки без использования атрибута [HttpDelete].

В целом, просто измените тип метода вашего вызова ajax на «DELETE»:

function DeleteDetail(pId) {
  const con = confirm("are you sure ?");

  if (con === true) {
     $.ajax({
        ...
        type: "DELETE",
        ...
        });
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...