我正在使用asp.net mvc 5.我创建了以下基本应用程序。
我想从下拉列表中将项目添加到列表中,并在html表格中显示它们。例如,我想从下拉列表向学生添加多个主题,并在下拉列表中的表格中显示它们。 我创建了以下视图和视图模型。
public class Subject
{
public string SubjectId {get; set;}
public string SubjectName {get ; set;}
}
public class StudentViewModel
{
public string Name { get; set; }
public string Grade { get; set; }
public string Subject { get; set; }
public List<Subject> subjectlist { get; set; }
}
@model School.Models.StudentViewModel
<form action="" method="post">
<p>
<label>Name</label>
@Html.TextBoxFor(model=> model.Name)
</p>
<p>
<label>Grade</label>
@Html.TextBoxFor(model=> model.Grade)
</p>
<p>
<label>Subject</label>
@Html.DropDownListFor(model => model.Subject, new SelectList(@ViewBag.Subjects, "value", "text"))
<button>Add</button>
</p>
<p>
<table>
<thead>
<tr>
<th>Subject</th>
</tr>
</thead>
</table>
<tbody>
@if (Model.subjectlist != null)
{
@foreach(var s in subjectlist)
{
<tr>
<td>s.SubjectName</td>
</tr>
}
}
</tbody>
</p>
</form>
用户应该可以添加多个主题,当他点击添加按钮时从下拉菜单中选择。但是有一个问题。使用我的代码,当我单击添加按钮时,它成功地将所选主题添加到列表中添加在下表中显示它们。但每次添加主题时,它都会重新创建&#34;主题列表&#34;以前添加的项目不存在。我的代码中有什么问题。有人请帮忙。
这是我的控制器代码。
public ActionResult Index()
{
StudentViewModel model = new StudentViewModel();
return View(model);
}
[HttpPost]
public ActionResult Index(StudentViewModel svm){
var sub = db.Subjects.Where(x=> x.SubjectId == svm.Subject).FirstOrDefault();
if(svm.subjectlist == null)
svm.subjectlist = new List<Subject>();
svm.subjectlist.Add(sub);
return View("Index",svm);
}