我正在上这些课程:
public class ProductViewModel
{
public IEnumerable<Product> Products { get; set; }
}
public class Product
{
public int ArticeNr { get; set; }
public string Name { get; set; }
}
这是一个视图。
@model ProductsViewModel
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<table class="table">
@foreach (var item in Model.Products) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ArticleNr)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
<input type="submit" value="submit" name="submitButton" />
}
如何将Model.Products中的所有值传递给Controller?我希望在foreach循环中发送所有值到控制器。
我的控制器以ProductsViewModel为参数。但是我在model.Products
中提交后,值为null。
public ActionResult Index(ProductsViewModel model) //here, model.Products is always null after post
{
//LOGIC
}
DisplayFor()
不会为 postback 创建输入。您需要使用生成<input>
或<select>
元素的方法,例如EditorFor()
、TextBoxFor()
、HiddenFor()
等。 - user3559349for(int i = 0; i < Model.Projects.Count; i++) { @Html.HiddenFor(m => m.Projects[i].Name) ..
。但是你为什么要提交一堆隐藏的输入呢? - user3559349$.get()
函数)将值传递给一个操作方法,该方法调用数据库根据这些值筛选结果并返回一个可以在视图中更新的部分视图 - 也就是说,您不需要重构整个页面。 - user3559349