使用 ASP.NET MVC5 将数据从数据库导入我视图中的下拉列表
Importing data from database into a dropdown list in my view using ASP.NET MVC5
我需要从我的数据库中获取数据并将其显示在我网页的下拉列表中:
返回的数据会有两个参数:DisciplineID 和 DisciplaneName。
在 Controller 之前一切正常。它 returns 正确的数据,但需要有关如何将数据正确移动到视图的帮助。
这是我使用 MVC5 的项目的分解:
型号Class:
public class Discipline
{
public int DisciplineID { get; set; }
public string DisciplineName { get; set; }
}
模型Class实现:
public class DisciplineModel : IDiscipline
{
private List<Discipline> disciplinesList = new List<Discipline>();
public IEnumerable<Discipline> disciplines()
{
LoadDisciplines(); //populates disciplinesList from database
return disciplinesList;
}
}
控制器:
[HttpGet]
public ActionResult EditDiscipline()
{
var disciplinesList = _idiscipline.disciplines();
return View(disciplinesList);
}
数据被带到这里,但需要将该数据移动到视图。
查看:
@model OnlineTestingSystem.Models.Discipline
<div class="container">
@using (Html.BeginForm("EditDiscipline", "Discipline", FormMethod.Post))
{
<div class="form-group">
@Html.LabelFor(a => a.DisciplineName, "Discipline Name")
@Html.DropDownListFor(a => a.DisciplineID, Model.disciplines,"Selected")
</div>
<input class="btn btn-primary" type="submit" />
}
@ViewBag.message
</div>
我需要添加从下拉列表返回的数据以显示 DisciplineID。那么我该如何修改我的不同 类 来实现这个目标呢?
下面这行的语法不正确,我只是想表明这就是我想要做的。
@Html.DropDownListFor(a => a.DisciplineID, Model.disciplines,"Selected")
提前致谢。
首先,您需要创建一个 ViewModel 来保存列表和该列表中的选定 id
:
public class DisciplineViewModel
{
public int? DisciplineId {get; set;}
public List<Discipline> DisciplineList {get ; set;}
}
然后在控制器中初始化这个视图模型:
[HttpGet]
public ActionResult EditDiscipline()
{
var disciplinesList = _idiscipline.disciplines();
var vm = new DisciplineViewModel
{
DisciplineList = disciplinesList;
}
return View(vm);
}
然后在视图中:
@model OnlineTestingSystem.Models.DisciplineViewModel
<div class="container">
@using (Html.BeginForm("EditDiscipline", "Discipline", FormMethod.Post))
{
<div class="form-group">
@Html.LabelFor(m => m.DisciplineList)
@Html.DropDownListFor(m => m.DisciplineId, new SelectList(Model.DisciplineList , "DisciplineID ", "DisciplineName "), "Select..." )
</div>
<input class="btn btn-primary" type="submit" />
}
@ViewBag.message
我需要从我的数据库中获取数据并将其显示在我网页的下拉列表中: 返回的数据会有两个参数:DisciplineID 和 DisciplaneName。
在 Controller 之前一切正常。它 returns 正确的数据,但需要有关如何将数据正确移动到视图的帮助。
这是我使用 MVC5 的项目的分解:
型号Class:
public class Discipline
{
public int DisciplineID { get; set; }
public string DisciplineName { get; set; }
}
模型Class实现:
public class DisciplineModel : IDiscipline
{
private List<Discipline> disciplinesList = new List<Discipline>();
public IEnumerable<Discipline> disciplines()
{
LoadDisciplines(); //populates disciplinesList from database
return disciplinesList;
}
}
控制器:
[HttpGet]
public ActionResult EditDiscipline()
{
var disciplinesList = _idiscipline.disciplines();
return View(disciplinesList);
}
数据被带到这里,但需要将该数据移动到视图。
查看:
@model OnlineTestingSystem.Models.Discipline
<div class="container">
@using (Html.BeginForm("EditDiscipline", "Discipline", FormMethod.Post))
{
<div class="form-group">
@Html.LabelFor(a => a.DisciplineName, "Discipline Name")
@Html.DropDownListFor(a => a.DisciplineID, Model.disciplines,"Selected")
</div>
<input class="btn btn-primary" type="submit" />
}
@ViewBag.message
</div>
我需要添加从下拉列表返回的数据以显示 DisciplineID。那么我该如何修改我的不同 类 来实现这个目标呢?
下面这行的语法不正确,我只是想表明这就是我想要做的。
@Html.DropDownListFor(a => a.DisciplineID, Model.disciplines,"Selected")
提前致谢。
首先,您需要创建一个 ViewModel 来保存列表和该列表中的选定 id
:
public class DisciplineViewModel
{
public int? DisciplineId {get; set;}
public List<Discipline> DisciplineList {get ; set;}
}
然后在控制器中初始化这个视图模型:
[HttpGet]
public ActionResult EditDiscipline()
{
var disciplinesList = _idiscipline.disciplines();
var vm = new DisciplineViewModel
{
DisciplineList = disciplinesList;
}
return View(vm);
}
然后在视图中:
@model OnlineTestingSystem.Models.DisciplineViewModel
<div class="container">
@using (Html.BeginForm("EditDiscipline", "Discipline", FormMethod.Post))
{
<div class="form-group">
@Html.LabelFor(m => m.DisciplineList)
@Html.DropDownListFor(m => m.DisciplineId, new SelectList(Model.DisciplineList , "DisciplineID ", "DisciplineName "), "Select..." )
</div>
<input class="btn btn-primary" type="submit" />
}
@ViewBag.message