我有一个部分视图生成其他部分视图的列表,当我提交到控制器时,我只从最后添加的项目中获取我想要的数据。我显然做了些傻事,但我看不清楚。
@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>
现在,当我提交表单时,我只会从上面创建的最后一项中获得“重要的东西”。我究竟做错了什么?
您正在获取最后一项,因为Thing
局部视图中的隐藏字段在每个foreach
迭代中都具有相同的名称。
list
或任何集合来获取控制器操作中所有隐藏值的集合。 public ActionResult GetMyValues(List<string> SomethingImportant)
iteration
上区分隐藏字段的名称,并在控制器中单独获取它们。