Как использовать href для отправки формы и отправки скрытых значений в контроллер - PullRequest
0 голосов
/ 17 июня 2019

У меня есть список отображаемых работ в моем представлении, когда я нажимаю на эту ссылку, я должен перейти на другую страницу, чтобы отобразить полную информацию, а в браузере 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="~/Jobs?id=@Model.id" method="post">
    <input type="hidden" name="id" id="id" value=@Model.id />
    <strong><a href="~/Jobs?@Model.title" 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);
}

Как отправить форму по клику href и передать скрытое значение контроллеру?

1 Ответ

1 голос
/ 17 июня 2019

Значение атрибута id должно быть назначено только одному элементу html. Обработчик onclick для формы только когда-либо найдет первый идентификатор, потому что он разработан, чтобы быть уникальным. Вместо этого вы должны добавить что-то уникальное к идентификатору элемента формы в вашем примере, чтобы они все были уникальными. Например:

<form id="Jobs-@item.id" action="~/Jobs?id=@item.id" method="post">
    <input type="hidden" name="id" id="id" value=@item.id />
    <strong><a href="~/Jobs?@item.title" onclick="document.getElementById('Jobs-@item.id').submit();">@item.title</a></strong>
</form>

Редактировать: Вы обязательно должны использовать идентификатор для каждого элемента, чтобы различать каждый блок формы и каждый ввод.

...