Я уже немного ломаю голову над этим. У меня есть форма ниже, которая отлично работает.
@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 });
}
}
Название параметра имеет значение. Вы должны переименовать свой параметр запроса в соответствии с объявлением действия:
data: { pclLineId: "@Model.ID" },
В вашем классе Controller вы назвали параметр pclLineId
вместо id
.
Вы также можете:
id
параметраpclLineId
вместо id
//Измените свою функцию на
function deleteItem() {
$.ajax({
url: "PCLLine/Delete",
type: "POST",
data: { pclLineId: "@Model.ID" },
dataType: "json",
success: function (data) {
alert('');
}
});
}