带有for循环的MVC视图仅返回最后一项

问题描述 投票:0回答:1

我有一个部分视图生成其他部分视图的列表,当我提交到控制器时,我只从最后添加的项目中获取我想要的数据。我显然做了些傻事,但我看不清楚。

    @for (int i = 0; i < Model.Listofthings.Count(); i++)
    {
        <ul>
            <li>
                @{Html.RenderPartial("Thing", Model.Listofthings[i]);}
            </li>
        </ul>
}

在Thing partial中我们有:

@model FancyObject
<script>
    $(function () {
        $('a#selectUser').click(function () {
            $('form#selectUserForm').submit();
        });
    });

< link rel="stylesheet" href="~/Content/Site.css" />
< form id="selectUserForm" method="post" action="@Url.Action("SelectUser", "Home")">

@Html.HiddenFor(x => x.SomethingImportant)
            <a href="#" id="selectUser" class="HyperLink1">
                <i class="fa fa-female"></i>
                <span class="nav-text">
                    @Model.AProperty
                </span>
            </a>

现在,当我提交表单时,我只会从上面创建的最后一项中获得“重要的东西”。我究竟做错了什么?

asp.net-mvc view controller
1个回答
0
投票

您正在获取最后一项,因为Thing局部视图中的隐藏字段在每个foreach迭代中都具有相同的名称。

  1. 您可以通过将参数声明为list或任何集合来获取控制器操作中所有隐藏值的集合。 public ActionResult GetMyValues(List<string> SomethingImportant)
  2. 或者,您可以在每个iteration上区分隐藏字段的名称,并在控制器中单独获取它们。
© www.soinside.com 2019 - 2024. All rights reserved.