【发布时间】:2015-10-13 09:22:05
【问题描述】:
我是 mvc 的新手。我想将数据列表从视图发送到控制器。我可以传递一名员工的详细信息,但不能传递列表。请提出一些建议来解决它。
我需要在控制器中获取 Lidt。
public class EmpDetails
{
public int Id { get; set; }
public string Name { get; set; }
public int OldSeq { get; set; }
public int NewSeq { get; set; }
}
public class DetailsList
{
public int Id { get; set; }
public IEnumerable<EmpDetails> EmpDetailsList { get; set; }
}
在控制器中有两个方法get和post。在 post 方法中获取 id 但不是 list.it 以 null 的形式出现。
[HttpGet]
public ActionResult EmployeeDetails()
{
List<EmpDetails> c2 = new List<EmpDetails>();
EmpDetails model = new EmpDetails();
model = new EmpDetails();
model.Id = 2;
model.Name = "Alex";
model.OldSeq = 4;
model.NewSeq = 5;
c2.Add(model);
DetailsList abc = new DetailsList();
abc.Id = 1;
abc.EmpDetailsList = c2;
return View(abc);
}
[HttpPost]
public ActionResult EmployeeDetails(DetailsList model)
{
return View("EmployeeDetails");
}
在视图中,我正在循环数据并显示。
@using MvcDemo.Models
@model DetailsList
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.EditorFor(modelItem => modelItem.Id)
<table>
@foreach (var item in Model.EmpDetailsList)
{
<tr>
<td>
@Html.EditorFor(modelItem => item.Id)
</td>
<td>
@Html.TextBoxFor(modelItem => item.Name)
</td>
<td>
@Html.TextBoxFor(modelItem => item.OldSeq)
</td>
<td>
@Html.TextBoxFor(modelItem => item.NewSeq)
</td>
</tr>
}
</table>
<input type="submit" value="Create" />
}
【问题讨论】:
-
您不能使用
foreach循环。您必须使用for循环(属性必须为IList<EmpDetails>或者您必须使用自定义EditorTemplate更多详情请参阅this answer -
感谢您的回复。您能解释一下为什么我需要使用 for 循环吗?
-
另请参阅 this answer 以获取
EditorFor()方法的示例 -
@nichu09 - 这是使用
for循环方法进行绑定的方式,生成的 html 将与您的模型匹配,而您的post将起作用。 -
没错!当您将其可视化时,它会更有意义。
标签: asp.net-mvc asp.net-mvc-4 model-view-controller view