我是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" />
}
答案 0 :(得分:1)
使用这样的编辑器模板。
EditorTemplates
文件夹中创建Views/Shared
文件夹。EmpDetails.cshtml
的文件。将您的foreach标记放在该文件中,如
@model EmpDetails
<tr>
<td>
@Html.EditorFor(modelItem => Model.Id)
</td>
<td>
@Html.TextBoxFor(modelItem => Model.Name)
</td>
<td>
@Html.TextBoxFor(modelItem => Model.OldSeq)
</td>
<td>
@Html.TextBoxFor(modelItem => Model.NewSeq)
</td>
</tr>
然后通过调用foreach
方法(如
@Html.EditorTemplateFor
@using MvcDemo.Models
@model DetailsList
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.EditorFor(modelItem => modelItem.Id)
<table>
@Html.EditorFor(m=>m.EmpDetailsList)
</table>
<input type="submit" value="Create" />
}
答案 1 :(得分:0)
Beaches._ensureIndex({ "location": "2dsphere"});
答案 2 :(得分:0)
感谢您的快速回复。在@stephen评论的帮助下,我将IEnumerable集合更改为List。然后我用于循环而不是每个。请检查以下代码。
public class DetailsList
{
public int Id { get; set; }
public List<EmpDetails> EmpDetailsList { get; set; }
}
<table>
@for(int item = 0; item < Model.EmpDetailsList.Count;item++ )
{
<tr>
<td>
@Html.EditorFor(modelItem => modelItem.EmpDetailsList[item].Id)
</td>
<td>
@Html.TextBoxFor(modelItem => modelItem.EmpDetailsList[item].Name)
</td>
<td>
@Html.TextBoxFor(modelItem => modelItem.EmpDetailsList[item].OldSeq)
</td>
<td>
@Html.TextBoxFor(modelItem => modelItem.EmpDetailsList[item].NewSeq)
</td>
</tr>
}
</table>