Quindi .. ho una classe che ha un List
. lo passo alla vista, come il codice qui sotto:Binding IPagedList con checkbox come lista
[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));
}
E poi la vista riceverà in questo modo:
@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"] }))
Il mio problema è che sarà reso in questo modo [0].subj
e che ha vinto Mi permettono di legare perché dovrebbe essere qualcosa come name[0].subj
.
Ho sperimentato e provato nuovi metodi, ci sono modi per legarli correttamente? Voglio usare Html Helpers
e per quanto possibile, non voglio ri-implementare uno personalizzato solo per questa parte.
Questa è la funzione in cui dovrebbero essere associati. Questa classe ha un List
di studenti (quella che mi sono convertito al IPagedList)
[HttpPost]
[Authorize(Roles="user")]
public ActionResult Test(student st)
Ed è così che il mio View
assomiglia. Sto usando CheckBoxFor
per le selezioni.
domanda Extra: Come mai la mia navigazione sembra così brutto?
È e dovrebbe essere '[0] .subj' (non' nome [0] .subj') perché il modello è ' PagedList '' non 'studente', il che significa che il metodo POST deve essere' IEnumerable 'non' studente'. In alternativa, se si desidera 'studente' nel metodo POST, il modello nella vista deve essere' studente'. –
Ma non generate alcun controllo per 'student' in ogni caso (eccetto per la proprietà' id') in modo che possa essere facilmente aggiunto come valore di route in modo da averlo nel metodo POST –
Quindi se è '[0] .subj' allora dovrebbe essere 'IEnumerable'? –