我有两个课程如下
public class ODCTE_Major
{
public int ODCTE_MajorId { get; set; }
public string OfficialMajorName { get; set; }
public string MajorCode { get; set; }
... More unrelated code ....
}
和
public class CareerMajor
{
...lots of unrealted code to this question left out
public int ODCTE_MajorId { get; set; }
public virtual ODCTE_Major ODCTE_Major { get; set; }
}
我添加了一个带有CRUD方法的控制器,并在create.cshtml中有这一行
<div class="editor-field">
@Html.DropDownList("ODCTE_MajorId", String.Empty)
@Html.ValidationMessageFor(model => model.ODCTE_MajorId)
</div>
选择列表使用ODCTE_Major中的OfficialMajorName填充它。我需要使用选择列表填充MajorCode或看起来像MajorCode的值 - OfficialMajorName。
有人可以提供协助吗?
感谢。
答案 0 :(得分:1)
将此添加到ODCTE_Major:
public string MajorDisplayName
{
get { return string.Format("{0} - {1}", MajorCode, OfficialMajorName); }
}
这只是一个只读属性,用于以您希望菜单使用的格式创建显示文本。
然后在CareerMajor中添加:
public IEnumerable<ODCTE_Major> Majors{ set; get; } // Thank you Shyju!
这将为您在视图模型中提供一个位置,以便将菜单中所需的专业列表传递给视图。
然后在您的操作方法中,当您创建一个CareerMajor视图模型以发送到视图时,使用您希望在菜单中显示的ODCTE_Major实体填充新的IEnumberable。
在视图页面上:
@Html.DropDownListFor(m => m.ODCTE_MajorId, new SelectList(Model.Majors, "ODCTE_MajorId", "MajorDisplayName", Model.ODCTE_MajorId), "Select One")
这会创建一个SelectList来填充下拉列表。 SelectList构造函数使用ODCTE_MajorId作为菜单中SelectListItem的值,并使用MajorDisplayName作为实际显示在菜单中的文本。它设置所选的值(如果有),并在菜单顶部添加带有“Select One”文本的空项。如果你不想要空文本,请随意拿出最后的论点。
答案 1 :(得分:0)
让您的ViewModel持有Collection
属性来代表所有可用的专业(用于打印下拉列表)
public class CareerMajor
{
//other proiperties
public int ODCTE_MajorId { get; set; }
public IEnumerable<ODCTE_Major> Majors{ set; get; }
}
在您的GET
操作中,填写并将其发送到强类型视图
pubilc ACtionResult Create()
{
var viewModel=new CareerMajor();
viewModel.Majors=db.GetllAllMajors(); // getting a list of ODCTE_Major objects
return View(viewModel);
}
并在视图中,使用DropDownListFor
HTML帮助程序方法。
@model CareerMajor
@Html.BeginForm())
{
@Html.DropDownListFor(m=>m.ODCTE_MajorId,
new SelectList(Model.Majors,"ODCTE_MajorId ","MajorCode"),"select one..")
//other elements
}
答案 2 :(得分:0)
在您的控制器操作中:
ViewBag.ODCTE_MajorId = new SelectList(availableMajors, "ODCTE_MajorId", "MajorCode");
*第二个和第三个参数分别是值和文本字段的名称
然后在你看来:
@Html.DropDownList("ODCTE_MajorId", String.Empty)
其中availableMajors
是包含您要列出的专业的IEnumerable。