所以..我有一个有一个类List.我把它传递给视图,如下面的代码:
[HttpGet]
[Authorize(Roles="user")]
[CustomChecker]
public ActionResult Index(int? page, int id=0)
{
EmployeeContext emp = new EmployeeContext();
student st = emp.students.Single(x=>x.id ==id);
@ViewBag.id = st.id;
return View(st.subjSel.ToPagedList(page ?? 1, 4));
}
Run Code Online (Sandbox Code Playgroud)
然后View会像这样收到它:
@using PagedList;
@using PagedList.Mvc;
@model PagedList<MvcApplication6.Models.subject>
<div style="font-family:Arial">
<fieldset>
<legend><h3>Open Classes</h3></legend>
@using (Html.BeginForm("Test", "Enrollment"))
{
<input type="hidden" name="id" value="@ViewBag.id" />
<table border="1">
<tr>
<th>@Html.LabelFor(model => model[0].subj)</th>
<th>@Html.LabelFor(model => model[0].days)</th>
<th>@Html.LabelFor(model => model[0].cstart)</th>
<th>@Html.LabelFor(model => model[0].cend)</th>
<th>@Html.LabelFor(model => model[0].professor)</th>
<th>@Html.LabelFor(model => model[0].units)</th>
<th>@Html.CheckBox("test") Select all</th>
</tr>
@for (int i = 0; i < Model.Count; i++)
{
<tr>
@Html.HiddenFor(model => model[i].id)
<td>
@Html.DisplayFor(m => m[i].subj)
@Html.HiddenFor(m => m[i].subj)
</td>
<td>
@Html.DisplayFor(m => m[i].days)
@Html.HiddenFor(m => m[i].days)
</td>
<td>
@Html.DisplayFor(m => m[i].cstart)
@Html.HiddenFor(m => m[i].cstart)
</td>
<td>
@Html.DisplayFor(m => m[i].cend)
@Html.HiddenFor(m => m[i].cend)
</td>
<td>
@Html.DisplayFor(m => m[i].professor)
@Html.HiddenFor(m => m[i].professor)
</td>
<td>
@Html.DisplayFor(m => m[i].units)
@Html.HiddenFor(m => m[i].units)
</td>
<td>
@Html.CheckBoxFor(m => m[i].isSelected)
</td>
</tr>
}
</table>
<br />
<br />
<table>
<tr><td align="center" width="500px"></td></tr>
<tr>
<td align="center" width="500px">
<input type="submit" value="submit" /> | <input type="button" value="clear" />
</td>
</tr>
</table>
<br />
<br />
}
</fieldset>
</div>
@Html.PagedListPager(Model, page => Url.Action("Index", "Enrollment", new { page, id = Request.QueryString["id"] }))
Run Code Online (Sandbox Code Playgroud)
我的问题是它会像这样呈现,[0].subj并且不允许我绑定因为它应该是类似的东西name[0].subj.
我一直在尝试和尝试新方法,有什么方法可以让我正确绑定它们吗?我想尽可能地使用Html Helpers,我不想为这部分重新实现一个自定义的.
这是他们应该受约束的功能.这个班有一个List学生(我转换为IPagedList的那个)
[HttpPost]
[Authorize(Roles="user")]
public ActionResult Test(student st)
Run Code Online (Sandbox Code Playgroud)
这就是我的View样子.我正在CheckBoxFor用于选择.

额外的问题: 为什么我的导航看起来如此丑陋?
小智 3
模型是视图,@model PagedList<subject>这意味着参数必须是
[HttpPost]
public ActionResult Test(IEnumerable<subject> model)
Run Code Online (Sandbox Code Playgroud)
如果您还需要学生ID属性,请包含一个附加参数
[HttpPost]
public ActionResult Test(IEnumerable<subject> model, int ID)
Run Code Online (Sandbox Code Playgroud)
由于 GET 方法有一个参数int ID,并且假设您使用默认路由,那么 ID 将被添加到 forms属性中,即假设 ID 的值为 ,action它将呈现。如果没有,您可以将其添加为路由参数action="/Enrollment/Test/2"2
@using (Html.BeginForm("Test", "Enrollment", new { ID = ViewBag.id }))
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用视图模型
public class StudentVM
{
public int ID { get; set; }
public PagedList<student> Students { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并在 GET 方法中
public ActionResult Index(int? page, int id=0)
{
EmployeeContext emp = new EmployeeContext();
student st = emp.students.Single(x=>x.id ==id);
StudentVM model = new StudentVM()
{
ID = id,
Students = st.subjSel.ToPagedList(page ?? 1, 4)
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
并将您的视图基于视图模型并将其发布回public ActionResult Test(StudentVM model)
| 归档时间: |
|
| 查看次数: |
842 次 |
| 最近记录: |