我的模型类就像这样
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
的字段,因为它将充当表中的外键然后,我不想要。我对Departments的使用仅用于展示目的。我怎么能做到这一点?
答案 0 :(得分:2)
使用ViewModel。 View Model是专门用于将数据从控制器发送到View的类。它不是您在Entity框架中使用的实体。它可以包含实体,实体列表,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中显示它们。我还没有测试过代码。
答案 1 :(得分:2)
尝试这样,纯粹的html + Razor suntax
<select name="departments">
@for (var i = 0; i < model.Departments ; i++){
<option>@(model.Departments[i])</option>
}
</select>