C# MVC4视图未传递正确的模态值

C# MVC4视图未传递正确的模态值,c#,asp.net-mvc,modal-dialog,C#,Asp.net Mvc,Modal Dialog,我一直在尝试更新数据库中的标志(活动)。为此,我有一个如下所示的视图。 在视图中,我在数据库中有记录,我在视图的表中的每一行传递BillPayID。我想知道的是,当用户按下开始或停止按钮时,活动标志设置为0或1 问题是,我的视图总是发送第一个BillPayID,即使单击了另一行上的按钮 能找个人帮忙吗 @if (Model !=null) { using (Html.BeginForm("StopScheduled", "Admin", FormMetho

我一直在尝试更新数据库中的标志(活动)。为此,我有一个如下所示的视图。 在视图中,我在数据库中有记录,我在视图的表中的每一行传递BillPayID。我想知道的是,当用户按下开始或停止按钮时,活动标志设置为0或1

问题是,我的视图总是发送第一个BillPayID,即使单击了另一行上的按钮

能找个人帮忙吗

@if (Model !=null)
        {
            using (Html.BeginForm("StopScheduled", "Admin", FormMethod.Post, new { }))
            { 
               <table>
                <tr>
                    <th>
                        Account Number 
                    </th>
                    <th>
                        Payee ID
                    </th>
                    <th>
                        Amount
                    </th>                 
                    <th>
                        Scheduled Date
                    </th>
                     <th>
                        Period
                    </th>
                    <th>
                        Active
                    </th>
                    <th>
                        Stop/Start Payment
                    </th>           

                </tr>

                @foreach(var item in Model)
                {

                    @Html.HiddenFor(model => item.BillPayID)

                    <tr>
                        <td>
                            @Html.DisplayFor(model => item.AccountNumber)
                            @Html.HiddenFor(model => item.AccountNumber)
                        </td>

                        <td>
                            @Html.DisplayFor(model => item.PayeeID)
                            @Html.HiddenFor(model => item.PayeeID)
                        </td>
                        <td>
                           $ @Html.DisplayFor(model => item.Amount)
                            @Html.HiddenFor(model => item.Amount)
                        </td>
                        <td>
                            @Html.DisplayFor(model => item.ScheduleDate)
                            @Html.HiddenFor(model => item.ScheduleDate)
                        </td>
                         <td>
                            @Html.DisplayFor(model => item.Period)
                             @Html.HiddenFor(model => item.Period)
                        </td>
                        <td>
                            @Html.DisplayFor(model => item.Active)
                             @Html.HiddenFor(model => item.Active)
                        </td> 

                        <td>
                            @if (item.Active == 0)
                            {
                                <input type="submit" style="width:100%" value="START" />

                            }
                            else                         
                            {
                                <input type="submit" style="width:100%" value="STOP" />
                            }

                        </td>  

                    </tr>

                }

                </table>
            }

        }

隐藏字段在html中仍然有一个名称和id,因此在您的示例中,为BillPayID添加x个隐藏字段,这些字段都将命名为item.BillPayID

将foreach循环更改为for循环,如下所示:

@for (int i =0; i < Model.Count(); i++)
{
  @Html.HiddenFor(model => Model[i].BillPayID)

  .... rest of your code
}
for(int i=0;imodel[i].BillPayID) ..代码的其余部分 } 视图代码将整个模型(IEnumerable)发送到控制器,这将使确定选择了哪一行成为一件痛苦的事情,因为它不会显示您在模型中跟踪所选项目的任何设置值

我建议您将启动/停止过程移动到另一个视图。如果单击表中的某个项目,它会将您带到第二个页面,要求您启动或停止。您还可以使用javascript函数将所选值发送到控制器

@for (int i =0; i < Model.Count(); i++)
{
  @Html.HiddenFor(model => Model[i].BillPayID)

  .... rest of your code
}