Я хочу позволить пользователям изменять описания в таблице, дважды щелкнув по строке и перенаправив в editView. По этой причине я хочу передать параметр Id, который хранится в базе данных вместе с маршрутом к действию. Вот как это выглядит в реальном коде:
Как это объявлено в mainView. :
@Html.Hidden("RedirectToChange", Url.Action("Index", "Edit"))
//main table
var dataTable;
var redirectToRun = $("#RedirectToRun").val();
var redirectToChange = $("#RedirectToChange").val();
$(document).ready(function () {
dataTable = $("#interfaceTable").DataTable({
"ajax": {
"url": "/Interface/GetData",
"type": "GET",
"datatype": "json",
{...here goes the table...}
$('#interfaceTable').on('dblclick', 'tbody tr', function (data) {
return $("InterfaceID").attr("href", redirectToChange);
}); //this function doesn't work but shows the general idea
Контроллеры:
public class EditController : Controller
{
[HttpGet]
public ActionResult Index(int? id)
{
try {
var ctx = new LoginDataBaseEntities();
var inter = ctx.Interfaces.Single(i => i.InterfaceID == id);
return View(inter);
}
catch (Exception e)
{
return Json(new { messege = e.Message }, JsonRequestBehavior.AllowGet);
}
}
[HttpPost]
public ActionResult EditDescription(Interface changes)
{
string description = changes.Description;
var ctx = new LoginDataBaseEntities();
var inter = ctx.Interfaces.Single(i => i.InterfaceID == changes.InterfaceID);
inter.Description = changes.Description;
ctx.SaveChanges();
return RedirectToAction("Index","Interface");
}
}
EditView:
<h2>Edit</h2>
@*showing current description*@
@using (Html.BeginForm("HintDescription", "Edit", new { id = Model.InterfaceID }, FormMethod.Get ))
{
<div class="text-body">
@Html.DisplayTextFor(m => m.Description)
</div>
}
@*change the description*@
@using (Html.BeginForm("EditDescription", "Edit", new { id = Model.InterfaceID }, FormMethod.Post))
{
<form class="form-group">
<div class="form.field">
@Html.HiddenFor(m => m.InterfaceID);
@Html.EditorFor(m => m.Description, new { placeholder = "Description" })
</div>
<br />
<div>
<input type="submit" class="btn-outline-primary" value="Change" />
</div>
</form>
}
По сути, мой вопрос заключается в том, как написать правильную функцию js для передачи параметра в контроллер или, если я полностью ошибаюсь в подходе, как сделать все правильно?