Хорошо, поэтому, чтобы сделать ссылку для операции CRUD на основе параметра, вы можете использовать AJAX для POST ваших данных с параметром или вы можете использовать Html.ActionLink
, который не POST, а скорее создает тег привязки .
1) Использование ActionLink с параметром:
@foreach (var item in Model)
{
<tr>
//Additional data
<td>
@Html.ActionLink("Delete", "Home", new { id = item.id})
</td>
</tr>
}
В вашем Home
контроллере:
public ActionResult Delete(int id) {//Your logic}
Обратите внимание, что если вы используете значение по умолчанию RouteConfig
, убедитесь, что вы отправляете id
в качестве параметра или вы можете создать собственную маршрутизацию по мере необходимости.
2) Вы также можете использовать AJAX для POST вашего контроллера. Вы можете сделать что-то вроде этого:
@foreach (var item in Model)
{
<tr>
//Additional data
<td>
<a href="#" data-id="@item.id" onclick="confirmDelete(this)"></a>
</td>
</tr>
}
А в вашем AJAX:
function confirmDelete(event) {
var recordToDelete = $(event).attr("data-id"); //Get our current file id here
if (confirm("Are you sure you want to delete this record") == true) {
//Prepare our data
var json = {
id: recordToDelete
};
$.ajax({
url: '@Url.Action("DeleteFile", "Home")',
type: "POST",
dataType: "json",
data: { "json": JSON.stringify(json) },
success: function (data) {
if(data == "success") {
alert("Successfully deleted selected file");
location.reload();
}
},
error: function (data) {
alert("Could not delete selected file. Please try again!");
},
});
}
};
И, наконец, в вашем контроллере:
//Delete a file based on the ID that you get from your View
[HttpPost]
public JsonResult DeleteFile(string json)
{
var serializer = new JavaScriptSerializer();
try
{
dynamic jsondata = serializer.Deserialize(json, typeof(object));
string id = jsondata["id"];
if(id != "")
{
int getid = Convert.ToInt32(id);
//Call your db or your logic to delete the file
DatabaseAccess data = new DatabaseAccess();
string result = data.DeleteFile(getid);
if(result.Equals("Success"))
{
return Json("success", JsonRequestBehavior.AllowGet);
}
else
{
return Json("fail", JsonRequestBehavior.AllowGet);
}
}
else
{
return Json("notfound", JsonRequestBehavior.AllowGet);
}
}
catch
{
return Json("dberror", JsonRequestBehavior.AllowGet);
}
}