仅在 MVC 5、EF 6 中获取用于显示目的的数据
Get data for display purpose only in MVC 5, EF 6
我的模型class是这样的
public class Appointment
{
public int AppointmentID { get; set; }
public string Name { get; set; }
public int ProcedureID { get; set; }
public virtual Department Department { get; set; }
public virtual Procedure Procedure { get; set; }
}
在我的控制器里
public ActionResult Create()
{
ViewBag.ProcedureID = new SelectList(db.Procedures, "ProcedureID", "ViCode");
return View();
}
可见
@Html.DropDownList("ProcedureID", null, new { @class = "form-control" })
这样我可以显示所有程序,但是我怎么能显示所有部门,我不想在模型中添加一个名为 DepartmentID
的字段,因为它会在 table 然后,我不想要。我对 Departments 的使用仅用于展示目的。我怎样才能做到这一点?
使用 ViewModel。 View Model 是一个 class 你专门用来将数据从 controller 发送到 View 的。它不是您在 Entity framework 中使用的实体。它可以包含实体、实体列表、SelectList 对象以及您需要的任何组合。它还具有静态类型的好处(与 ViewBag 不同)
public class CreateViewModel
{
public SelectList Producers {get; set;}
public List<Department> Departments {get; set;}
public int SelectedProducerID {get; set;}
}
在控制器中
var model = new CreateViewModel
{
Producers = new SelectList(db.Procedures, "ProcedureID", "ViCode");
Departments = db.Departments.ToList()
}
return View(model);
在视图中
@Html.DropDownListFor(model => model.SelectedProducerID, Model.Producers, ...)
我不知道你想如何显示部门,但你可以循环遍历它们并在 html 中显示它们。我没有测试代码。
像这样尝试,纯净 html + Razor suntax
<select name="departments">
@for (var i = 0; i < model.Departments ; i++){
<option>@(model.Departments[i])</option>
}
</select>
我的模型class是这样的
public class Appointment
{
public int AppointmentID { get; set; }
public string Name { get; set; }
public int ProcedureID { get; set; }
public virtual Department Department { get; set; }
public virtual Procedure Procedure { get; set; }
}
在我的控制器里
public ActionResult Create()
{
ViewBag.ProcedureID = new SelectList(db.Procedures, "ProcedureID", "ViCode");
return View();
}
可见
@Html.DropDownList("ProcedureID", null, new { @class = "form-control" })
这样我可以显示所有程序,但是我怎么能显示所有部门,我不想在模型中添加一个名为 DepartmentID
的字段,因为它会在 table 然后,我不想要。我对 Departments 的使用仅用于展示目的。我怎样才能做到这一点?
使用 ViewModel。 View Model 是一个 class 你专门用来将数据从 controller 发送到 View 的。它不是您在 Entity framework 中使用的实体。它可以包含实体、实体列表、SelectList 对象以及您需要的任何组合。它还具有静态类型的好处(与 ViewBag 不同)
public class CreateViewModel
{
public SelectList Producers {get; set;}
public List<Department> Departments {get; set;}
public int SelectedProducerID {get; set;}
}
在控制器中
var model = new CreateViewModel
{
Producers = new SelectList(db.Procedures, "ProcedureID", "ViCode");
Departments = db.Departments.ToList()
}
return View(model);
在视图中
@Html.DropDownListFor(model => model.SelectedProducerID, Model.Producers, ...)
我不知道你想如何显示部门,但你可以循环遍历它们并在 html 中显示它们。我没有测试代码。
像这样尝试,纯净 html + Razor suntax
<select name="departments">
@for (var i = 0; i < model.Departments ; i++){
<option>@(model.Departments[i])</option>
}
</select>