У меня есть список, отображающий задания в моем представлении, когда я нажимаю на эту ссылку, я должен перейти на другую страницу для отображения полной информации, а в URL-адресе браузера должен отображаться, как показано ниже.
//mysite.com/jobs/auto-damage-adjuster-trainee-houston-and-surrounding-cities.
Для этого я пытаюсь отправить форму по щелчку и передать скрытое значение контроллеру. Но он всегда передает первый элемент из списка.
@model List<JobPortal.Models.MyDB>
@{
ViewBag.Title = "Current List";
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@foreach (var list in Model)
{
<div class = "row">
<div class = "flexcontainer">
@Html.Partial("_MySharedView", list)
</div>
</div>
}
}
Общий вид -
@model JobPortal.Models.MyDB
@if (Model.JDetails.Count > 0)
{
@foreach (var item in JDetails)
{
<form id = "Jobs" action = "~/[email protected]" method = "post">
<input type = "hidden" name = "id" id = "id" [email protected] />
<strong><a href = "~/[email protected]" onclick = "document.getElementById('Jobs').submit();">@Model.title</a></strong>
</form>
}
}
Контроллер -
public ActionResult Jobs(int? id)
{
var allDetails = _db.MyDB.Where(p => p.id == id).FirstOrDefault();
return View(allDetails);
}
Как отправить форму onclick href и передать скрытое значение контроллеру?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Значение атрибута id должно быть назначено только одному элементу html. Обработчик onclick для формы всегда найдет только первый идентификатор, потому что он разработан, чтобы быть уникальным. Вместо этого вы должны добавить что-то уникальное к идентификатору элемента формы в вашем примере, чтобы все они были уникальными. Например:
<form id = "[email protected]" action = "~/[email protected]" method = "post">
<input type = "hidden" name = "id" id = "id" [email protected] />
<strong><a href = "~/[email protected]" onclick = "document.getElementById('[email protected]').submit();">@item.title</a></strong>
</form>
Обновлено: вам обязательно следует использовать идентификатор для каждого элемента, чтобы различать каждый блок формы и каждый ввод.
Обязательно использовать метод POST вместо GET?