0
Entity Framework에 연결된 MVC 응용 프로그램을 만들고 있습니다. 내보기에는 드롭 다운 목록이 있습니다. 코드는 다음과 같습니다.MVC 드롭 다운 목록이 잘못 표시되었습니다.
@{
ViewBag.Title = "ClassesPickGroup"; } @model ClassDeclarationsThsesis.Models.ClassesPickGroupViewModel
<h2>ClassesPickGroup</h2>
@foreach (var user in Model.users) {
if (user.email.Replace(" ", String.Empty) == HttpContext.Current.User.Identity.Name)
{
if (user.user_type.Replace(" ", String.Empty) == 3.ToString() || user.user_type.Replace(" ", String.Empty) == 2.ToString())
{
using (Html.BeginForm("ClassesPickGroup", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Generate summary views</h4>
<hr />
@Html.ValidationSummary("", new { @class = "text-danger" })
<div class="form-group">
@{
List<SelectListItem> listItems1 = new List<SelectListItem>();
foreach (var sub in Model.subjects)
{
if (sub.name.Replace(" ", String.Empty) == Model.subject_name.Replace(" ", String.Empty))
{
Model.subject_id = sub.class_id;
}
}
foreach (var group in Model.groups)
{
if (group.class_id == Model.subject_id)
{
listItems1.Add(new SelectListItem
{
Text = group.name,
Value = group.name,
});
}
}
}
@Html.LabelFor(m => m.selected_group, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.selected_group, listItems1, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Submit" />
</div>
</div>
}
}
if (user.user_type.Replace(" ", String.Empty) == 1.ToString())
{
<p>You do not have enough permissions to enter this page. Contact the administrator.</p>
}
}
}
그러나 드롭 다운 목록에 잘못된 내용이 표시됩니다. 요소의 수는 정확하지만 모든 이름은 동일합니다. 모든 이름은 모델에서 선택하는 첫 번째 일치하는 '그룹'에 해당합니다. 내가 뭘 잘못 했니?
내 컨트롤러는 다음과 같습니다
public ActionResult ClassesPickGroup(ClassesPickGroupViewModel value)
{
ClassDeclarationsDBEntities1 entities=new ClassDeclarationsDBEntities1();
int subj_id=0;
ClassesPickGroupViewModel model=new ClassesPickGroupViewModel();
model.subject_name = value.subject_name;
foreach (var subject in entities.Subjects)
{
if(subject.name.Replace(" ",String.Empty)==value.subject_name.Replace(" ", String.Empty))
{
subj_id = subject.class_id;
}
}
model.groups = entities.Groups.ToList();
model.subjects = entities.Subjects.ToList();
model.users = entities.Users.ToList();
if (ModelState.IsValid)
{
return RedirectToAction("ClassesView", "Account");
}
else
{
model.groups = entities.Groups.ToList();
model.subjects = entities.Subjects.ToList();
model.users = entities.Users.ToList();
return View(model);
}
return View(model);
}
분명히 잘 작동하지 않는 그룹을 추가, 그룹 (그러나 데이터베이스에 그들이) 고유하지 않습니다. 그게 뭐가 잘못 되었 니?
'Model.groups'에는 고유 한 그룹이 있습니까? 드롭 다운 목록 옵션이 루핑을 통해 만들어지고있는 것 같습니다. 또한 if 조건이 true를 반환 할 때 새 SelectListItem을 추가합니다. 그것은 한 번만 또는 한 번 이상 진실로 돌아갈 것인가? 그것은 모두'Model.groups'에 어떤 데이터가 있는지에 달려 있습니다. – Shyju
@Shyju 편집을 참조하십시오 –
'class_id' 속성 값은 고유합니까? 'Model.subject_id'의 가치는 무엇입니까? (보기 코드에서 그 값을 설정하려고하는 것 같습니다. 두 번째 foreach 루프 전에 인쇄 할 수 및 class_Id 올바른 값을 볼 수 있습니까? – Shyju