从asp.net mvc 5中的下拉列表填充表格

时间:2015-04-12 03:58:14

标签: c# asp.net asp.net-mvc linq asp.net-mvc-5

我正在使用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);
 }

0 个答案:

没有答案