带有多个提交按钮的C#MVC4表 - 始终发送相同的数据

时间:2016-02-18 10:34:21

标签: c# asp.net-mvc-4

我的视图中有一个表,列出了每一行的案例细节。每行都有一个名为"查看详细信息"的提交按钮。我有两个隐藏字段,TicketNumber和CaseId,当用户点击"查看详细信息"按钮。

问题是:它总是在表中发送第一个案例的TicketNumber和CaseId,无论哪个"查看详细信息"按下按钮。

以下是视图的代码:

@model IEnumerable<Models.Case>

@{
    ViewBag.Title = "AbandonedVehiclesLandingPage";
}

<h2>AbandonedVehiclesLandingPage</h2>


<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.TicketNumber)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Title)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Status)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.SubmittedOn)
        </th>
        <th></th>
    </tr>
</table>
@using (Html.BeginForm("ViewCase", "Home",FormMethod.Post))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
    <table>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.TicketNumber)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Title)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Status)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.SubmittedOn)
                </td>
                <td>
                    <input type="hidden" value="@item.TicketNumber" name="TicketNumber" />
                    <input type="hidden" value="@item.CaseId"  name="CaseId" />
                    <input type="submit" value="View Details" />
                </td>
            </tr>
        }
    </table>
}

以下是接收行动:

    [HttpPost]
    public ActionResult ViewCase(string TicketNumber, string CaseId)
    {
        string token = (string)Session["token"];
        if(token!=null)
        {
            if (provider.ValidateUser(Session["token"].ToString(), ""))
            {
                CaseService service = new CaseService("");
                CaseNote caseInfo = service.fetchSingleCase(TicketNumber, CaseId);
                return View("ViewCase", caseInfo);
            }
        }
        return Redirect(HttpContext.Application["connectUrl"].ToString()
            + HttpContext.Application["redirectUrl"].ToString());
    }

最后要说的是,它一直工作到我丢失原始View代码并且不得不重新编写它。感觉就像我在这里失踪的那么小。

1 个答案:

答案 0 :(得分:2)

按如下方式更改您的表格:

<table>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.TicketNumber)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Title)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Status)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.SubmittedOn)
            </td>
            <td>
                @using (Html.BeginForm("ViewCase", "Home",FormMethod.Post))
                {
                    @Html.AntiForgeryToken()
                    <input type="hidden" value="@item.TicketNumber" name="TicketNumber" />
                    <input type="hidden" value="@item.CaseId"  name="CaseId" />
                    <input type="submit" value="View Details" />
                }
            </td>
        </tr>
    }
</table>