MVC JQuery удалить действие не работает

0

Я уже немного ломаю голову над этим. У меня есть форма ниже, которая отлично работает.

@using (Html.BeginForm("Edit", "PCLLine", FormMethod.Post))
{
  @Html.AntiForgeryToken()
  @Html.ValidationSummary(true)

  @Html.HiddenFor(model => model.ID)
  @Html.HiddenFor(model => model.Field)
  <div class="small">
    @Html.TextBoxFor(model => model.Number, new { onchange = "setEditWBSElementNumber(this," + Model.ID + ")" })
    @Html.ValidationMessageFor(model => model.Number)
  </div>

  <div class="large">
    @Html.EditorFor(model => model.Description)
    @Html.ValidationMessageFor(model => model.Description)
  </div>

  <div>
    @Html.EditorFor(model => model.NumberTwo)
    @Html.ValidationMessageFor(model => model.NumberTwo)
  </div>

  <div>
    @Html.TextBoxFor(model => model.ConcatNumber, new { @id = Model.ID.ToString() + "_WBSElementNumber" })
    @Html.ValidationMessageFor(model => model.ConcatNumber)
  </div>

  <div class="large">
    @Html.EditorFor(model => model.Remarks)
    @Html.ValidationMessageFor(model => model.Remarks)
  </div>
  <div>
    <input type="submit" class="accept" value="Opslaan" />
  </div>
  <div>
    <input class="folderButton" value="Opties" onclick="pclSubLineDialog()" />
  </div>
  <div>
    <input class="delete" value="Verwijderen" onclick="deleteItem(); return false;" />
  </div>
}

Проблема здесь в удалении. Он вызывает функцию, но не выполняет ее правильно. Это не влияет на мои действия с контроллером, но при попытке выполнить другие действия с контроллером он работает:

function deleteItem() {
    $.ajax({
      url: "PCLLine/Delete",
      type: "POST",
      data: { id: "@Model.ID" },
      dataType: "json",
      success: function (data) {
        alert('');
      }
    });
  }

И контроллер:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(int pclLineId)
{
  try
  {
    // TODO: Add delete logic here
    _pclLineBLL.DeletePCLLine(pclLineId);
    return Json(new { success = true });
  }
  catch
  {
    return Json(new { success = false });
  }
}
Теги:
asp.net-mvc

3 ответа

3
Лучший ответ

Название параметра имеет значение. Вы должны переименовать свой параметр запроса в соответствии с объявлением действия:

data: { pclLineId: "@Model.ID" },
2

В вашем классе Controller вы назвали параметр pclLineId вместо id.

Вы также можете:

  1. Переименуйте id параметра
  2. Измените функцию jQuery, чтобы передать pclLineId вместо id
0

//Измените свою функцию на

function deleteItem() {
    $.ajax({
      url: "PCLLine/Delete",
      type: "POST",
      data: { pclLineId: "@Model.ID" },
      dataType: "json",
      success: function (data) {
        alert('');
      }
    });
  }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню