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

时间:2017-12-19 14:14:59

标签: asp.net-mvc view controller

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

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

现在,当我提交表单时,我只从上面创建的最后一项获得“SomethingImportant”。我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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