【发布时间】:2011-08-17 12:58:38
【问题描述】:
我在这里有一个页面,显示两个班级组 - 学生组/学生列表 - 您可以从中选择一些 => 单击按钮 => 选定的学生更改班级组。
默认情况下,第一个班级组在另一个页面中被选中,第二个学生列表是还没有班级组的学生。
现在我想在数据库中添加一个包含所有班级组的下拉列表,然后用户(教师)可以选择一个,第二个班级列表会更改为所选班级组。
问题是我似乎无法在我的控制器中获得选定的类组(我对 mvc3 相当陌生,我在应用信息学 atm 的第二年,我们没有书籍/课程关于这个,但我似乎无法让它工作)
控制器动作(DocentController):
public ViewResult ToonStudenten(string id) //id = klasnaam
{
var GeselecteerdeKlas = StudentRepo.getStudentenByKlas(id);
var TweedeKlas = StudentRepo.getStudentenZonderKlas();
var AlleKlassen = KlasRepo.FindAllKlasNaam();
var KlasNaam = id;
ViewBag.EersteKlas = id;
ViewBag.TweedeKlas = "Deze studenten kregen nog geen klas toegewezen, gelieve de studenten die u naar klas" + id + " wil verzetten te selecteren";
return View(new ToonStudentenModel(GeselecteerdeKlas, TweedeKlas, AlleKlassen, KlasNaam));
}
[HttpPost, ActionName("ToonStudenten")]
public ActionResult VeranderStudentenKlas(string[] deleteInputsKlas1, string[] deleteInputsKlas2, string id, string id2)//, string klasnaam1, string opdrachtID)
{
//TODO: Lijsten worden goed mee gegeven, klasnaam nog NIET (= null)
if (deleteInputsKlas2 == null && deleteInputsKlas1 == null)
{
ModelState.AddModelError("", "Er werden geen Studenten geselecteerd");
return RedirectToAction("ToonStudenten", "Docent", new { id = id });
}
foreach (var item in deleteInputsKlas1)
{
try
{
StudentRepo.VeranderKlas(item, null);
}
catch (Exception er)
{
ModelState.AddModelError("", "Failed on ID " + item + " : " + er.Message);
return View("error");
}
}
foreach (var item in deleteInputsKlas2)
{
try
{
StudentRepo.VeranderKlas(item, id);
}
catch (Exception er)
{
ModelState.AddModelError("", "Failed on ID " + item + " : " + er.Message);
return View("error");
}
}
StudentRepo.SaveChanges();
return RedirectToAction("ToonStudenten", "Docent", new { id = id });
}
}
}
视图模型
{
public class ToonStudentenModel
{
public IEnumerable<Student> EersteKlas { get; set; }
public IEnumerable<Student> TweedeKlas { get; set; }
public IEnumerable<Student> GeselecteerdUitEersteKlas { get; set; }
public IEnumerable<Student> GeselecteerdUitTweedeKlas { get; set; }
public IEnumerable<string> KlassenDropDown { get; set; }
public string KlasNaam { get; set; }
public string geselecteerdeKlasUitDropDown { get; set; }
public ToonStudentenModel(IEnumerable<Student> GeselecteerdeKlas,
IEnumerable<Student> AndereKlasOfStudZonderKlas, IEnumerable<string> KlassenDropDown, string KlasNaam)
{
EersteKlas = GeselecteerdeKlas;
TweedeKlas = AndereKlasOfStudZonderKlas;
this.KlassenDropDown = KlassenDropDown;
this.KlasNaam=KlasNaam;
}
}
}
查看:
@using (Html.BeginForm(new { id = Model.KlasNaam } ))
{
<div>
@Html.ValidationSummary()
</div>
<div style="float:right;">
<input type="submit" value="Delete Selected Values" />
</div>
<h2>Index</h2>
<div>Studenten @ViewBag.EersteKlas</div>
<table>
<tr>
<th></th>
<th></th>
<th>
Studentennummer
</th>
<th>
Voornaam
</th>
<th>
Naam
</th>
</tr>
@foreach (var item in Model.EersteKlas)
{
<tr>
<td>
<input type="checkbox" name="deleteInputsKlas1" value="@item.StudentID" />
</td>
<td>
@Html.ActionLink("Details", "Details", new { id = item.StudentID }) |
</td>
<td>
@item.StudentID
</td>
<td>
@item.Voornaam
</td>
<td>
@item.Naam
</td>
</tr>
}
</table>
@ViewBag.TweedeKlas
<table>
<tr>
<th></th>
<th></th>
<th>
Studentennummer
</th>
<th>
Voornaam
</th>
<th>
Naam
</th>
</tr>
@foreach (var item in Model.TweedeKlas)
{
<tr>
<td>
<input type="checkbox" name="deleteInputsKlas2" value="@item.StudentID" />
</td>
<td>
@Html.ActionLink("Details", "Details", new { id = item.StudentID }) |
</td>
<td>
@item.StudentID
</td>
<td>
@item.Voornaam
</td>
<td>
@item.Naam
</td>
</tr>
}
</table>
<input type="hidden" name="id" value = @Model.KlasNaam />
<input type="hidden" name="id1" value = @Model.opdrachtID />
<div>OF: Kies een andere klas om studenten in klas @Model.KlasNaam te steken:
@Html.DropDownListFor(model => Model.KlassenDropDown, new SelectList(Model.KlassenDropDown))
</div>
}
<div>
@Html.ActionLink("Terug naar uw klassen", "ToonKlassen", new{id = Model.opdrachtID });
</div>
【问题讨论】:
标签: c# asp.net entity-framework asp.net-mvc-3