C# MVC发送一个对象列表
我有一个索引视图,其中一个表填充了列表属性中的数据,但是当我用该表发布表单时,该属性为null 模型如下:C# MVC发送一个对象列表,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个索引视图,其中一个表填充了列表属性中的数据,但是当我用该表发布表单时,该属性为null 模型如下: public class BillViewModel { public List<Product> ListProducts { get; set; } } 以下是视图: @using (Html.BeginForm()) { <input type="submit" value="Aceptar"/> <table id="tabla"&
public class BillViewModel
{
public List<Product> ListProducts { get; set; }
}
以下是视图:
@using (Html.BeginForm())
{
<input type="submit" value="Aceptar"/>
<table id="tabla">
@foreach (var item in Model.ListProducts)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.ProductName)
</td>
</tr>
}
</table>
}
这很简单,只需将所有项属性放置在表单中,如下所示:
<input type="submit" value="Aceptar"/>
<table id="tabla">
@for (int i = 0; i < Model.ListProducts.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(x => x.ListProducts[i].ProductId)
@Html.HiddenFor(x => x.ListProducts[i].Price)
@Html.DisplayFor(x => x.ListProducts[i].ProductName)
</td>
</tr>
}
</table>
这很简单,只需将所有项属性放置在表单中,如下所示:
<input type="submit" value="Aceptar"/>
<table id="tabla">
@for (int i = 0; i < Model.ListProducts.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(x => x.ListProducts[i].ProductId)
@Html.HiddenFor(x => x.ListProducts[i].Price)
@Html.DisplayFor(x => x.ListProducts[i].ProductName)
</td>
</tr>
}
</table>
请回顾这个答案:这是同样的问题,我相信它会解决你的问题。是的,你可以控制所有细节。Mvc流程是控制器与modal和view进行通信的流程。请查看此答案:这是相同的问题,我相信它会解决您的问题。是的,您可以在控制中获得所有详细信息。Mvc流是指控制器与modal和view通信。是的,我使用for代替foreach为列表和每个属性提供索引。所有这些都使用隐藏对象。“它是有效的。”DiegoUnanue很高兴它能起作用:如果它是你想要的,请随意标记它作为一个答案:祝你好运。干杯如果我添加新行会发生什么情况,例如,我有一个文本框,可以在其中添加新产品,该产品不在数据库中,因此它没有id。我可以使用什么样的结构方式发送所有产品并将不在其中的产品插入数据库。它有ProductId和ProductName,我可以找到数据库中没有的名称。但是,如果我可以重复使用productNames?@DiegoUnanue在你的情况下,如果我要添加新元素,我可能会在ajax帖子中添加新元素->返回结果,然后在表单上按照相同的结构添加新项目,但这次我的项目会有一个Id。我希望这会有所帮助。我使用的是foreach而不是for循环,这就是列表未提交的原因,将其更改为for循环完成了提交。谢谢是的,我使用for代替foreach为列表和每个属性提供索引。所有这些都使用隐藏对象。“它是有效的。”DiegoUnanue很高兴它能起作用:如果它是你想要的,请随意标记它作为一个答案:祝你好运。干杯如果我添加新行会发生什么情况,例如,我有一个文本框,可以在其中添加新产品,该产品不在数据库中,因此它没有id。我可以使用什么样的结构方式发送所有产品并将不在其中的产品插入数据库。它有ProductId和ProductName,我可以找到数据库中没有的名称。但是,如果我可以重复使用productNames?@DiegoUnanue在你的情况下,如果我要添加新元素,我可能会在ajax帖子中添加新元素->返回结果,然后在表单上按照相同的结构添加新项目,但这次我的项目会有一个Id。我希望这会有所帮助。我使用的是foreach而不是for循环,这就是列表未提交的原因,将其更改为for循环完成了提交。谢谢
<input type="submit" value="Aceptar"/>
<table id="tabla">
@for (int i = 0; i < Model.ListProducts.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(x => x.ListProducts[i].ProductId)
@Html.HiddenFor(x => x.ListProducts[i].Price)
@Html.DisplayFor(x => x.ListProducts[i].ProductName)
</td>
</tr>
}
</table>