【问题标题】:How to use href to to submit form and send hidden values to controller如何使用 href 提交表单并将隐藏值发送到控制器
【发布时间】:2019-06-18 03:59:36
【问题描述】:

我的视图中有一个显示作业的列表,当我单击该链接时,它应该将我带到不同的页面以显示完整的详细信息,并且在浏览器中的 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);
}

如何提交表单 onclick href 并将隐藏值传递给控制器​​?

【问题讨论】:

  • 强制使用 POST 方法而不是 GET 方法?

标签: javascript c# razor


【解决方案1】:

id 属性的值只能分配给一个 html 元素。表单的 onclick 处理程序只会找到第一个 id,因为它们被设计为唯一的。相反,您应该在示例中的表单元素的 id 上附加一些独特的东西,以便它们都是唯一的。例如:

<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>

编辑:您绝对应该在每个项目上使用标识符来区分每个表单块和每个输入。

【讨论】:

    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多