Asp.net mvc @用于返回空值的Html.hidden
我试图将表的结果返回给控制器,以便进行进一步操作。返回控制器后,该值显示为null。在过去,我可以使用@Html.HiddenFor返回值,但在本例中它似乎不起作用。我不知道我做错了什么。非常感谢您的帮助Asp.net mvc @用于返回空值的Html.hidden,asp.net-mvc,Asp.net Mvc,我试图将表的结果返回给控制器,以便进行进一步操作。返回控制器后,该值显示为null。在过去,我可以使用@Html.HiddenFor返回值,但在本例中它似乎不起作用。我不知道我做错了什么。非常感谢您的帮助 @model IEnumerable<Project.Models.Item> @{ ViewBag.Title = "Welcome to The Project"; } @using (Html.BeginForm("UpdateQuality", "Home",
@model IEnumerable<Project.Models.Item>
@{
ViewBag.Title = "Welcome to The Project";
}
@using (Html.BeginForm("UpdateQuality", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
<div class="row">
<div class="form-group">
<table class="table table-bordered">
<tr>
<th>@Html.DisplayNameFor(m => m.Name)</th>
<th>@Html.DisplayNameFor(m => m.SellIn)</th>
<th>@Html.DisplayNameFor(m => m.Quality)</th>
</tr>
@for (int i = 0; i < Model.Count(); i++)
{
<tr>
<td>@Html.DisplayFor(m => m.ElementAt(i).Name)</td>
<td>@Html.DisplayFor(m => m.ElementAt(i).SellIn)</td>
<td>@Html.DisplayFor(m => m.ElementAt(i).Quality)</td>
@Html.HiddenFor(m => m.ElementAt(i).Name)
@Html.HiddenFor(m => m.ElementAt(i).SellIn)
@Html.HiddenFor(m => m.ElementAt(i).Quality)
</tr>
}
</table>
<div class="form-group">
<div style="margin-top: 50px">
<input type="submit" class="btn btn-primary" value="Advance Day"/>
</div>
</div>
</div>
</div>
}
@model IEnumerable
@{
ViewBag.Title=“欢迎来到项目”;
}
@使用(Html.BeginForm(“updateequality”,“Home”,new{ReturnUrl=ViewBag.ReturnUrl},FormMethod.Post,new{@class=“form horizontal”,role=“form”}))
{
@DisplayNameFor(m=>m.Name)
@DisplayNameFor(m=>m.SellIn)
@DisplayNameFor(m=>m.Quality)
@对于(int i=0;im.ElementAt(i.Name)
@DisplayFor(m=>m.ElementAt(i.SellIn)
@DisplayFor(m=>m.ElementAt(i).Quality)
@HiddenFor(m=>m.ElementAt(i.Name)
@HiddenFor(m=>m.ElementAt(i.SellIn)
@HiddenFor(m=>m.ElementAt(i).Quality)
}
}
这是返回null的控制器
public ActionResult UpdateQuality(List<Item> Items )
{
return View("Index", (object)Items);
}
public ActionResult UpdateQuality(列表项)
{
返回视图(“索引”,“对象”项);
}
您不能在生成表单控件的HtmlHelper
方法中使用ElementAt()
(查看生成的name
属性-它与您的模型不匹配)
将模型更改为IList
或者更改使用自定义的
EditorTemplate
作为项的类型,并在主视图中使用@Html.EditorFor(m=>m)
为集合中的每个项生成正确的Html。这现在工作正常。它将我的表格数据发送到控制器,在控制器中执行一些简单的数学运算,然后将更新后的数据返回到视图,并在表格上正确显示。但是,如果再次单击“提交”,它将返回原始表数据,而不是更新的数据。我错过什么了吗?如果您需要更多信息,请告诉我。如果您使用的是自定义模板,我对如何迭代集合有点困惑-m=>m只是将父对象提交到模板?@mattstrower。在您的例子中,您将有一个带有@model Tnc
和@Html.HiddenFor(m=>m.listncid)
等的/Views/Shared/EditorTemplates/Tnc.cshtml
视图,然后在主视图中使用@Html.EditorFor(m=>m.Tncs)
为collection@MattThrower. 也许有助于更好地理解它谢谢。现在开始工作了-你帮了我很大的忙,我感谢你的时间和耐心。
@model List<Project.Models.Item>
@for (int i = 0; i < Model.Count; i++)
{
....
@Html.HiddenFor(m => m.[i].Name)
....