我有一个模型课
namespace myapp.Models
{
public class SubjectModels
{
[Key]
public int SubjectId { get; set; }
[Required]
public int SubjectType { get; set; }
[Required]
[MinLength(5)]
public string SubjectName { get; set; }
}
}
在这里SubjectType = 1 for Optional and SubjectType = 2 for Compulsory
现在在另一个课程中,我必须为该课程创建一个下拉列表,
namespace myapp.Models
{
public class SelectionModels
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SelectionId { get; set; }
[Required]
[MinLength(5)]
public string SelectionDate { get; set; }
[ForeignKey("SubjectId")]
public SubjectModels Subject { get; set; }
public int SubjectId { get; set; }
}
}
当我通过脚手架生成控制器并创建create.cshtml时,我的创建控制器方法是
public ActionResult Create()
{
ViewBag.SubjectId = new SelectList(db.Subjects, "SubjectId", "SubjectName");
return View();
}
但是我必须创建一个下拉列表,将字段“ SubjectName ”和“ SubjectType ”连接起来。另外, SubjectType 的显示应该是可选的,并且不是整数。
例如,
"Optional - ResearchMethodology"
"Compulsory - BioChemistry"
我该怎么做?我用谷歌搜索,但找不到合适的解决方案。请帮忙!!!
答案 0 :(得分:1)
我将在SubjectModels
类中创建一个额外的属性。
class SubjectModels
{
public int SubjectId { get; set; }
public int SubjectType { get; set; }
public string SubjectName { get; set; }
public string SubjectNameAndType
{
get
{
return string.Format("{0} - {1}", SubjectName, SubjectType);
}
}
}
然后在Controller中,您可以使用该属性填充SelectList
var list = new List<SubjectModels>()
{
new SubjectModels()
{
SubjectType = 1,
SubjectName = "Name 1"
},
new SubjectModels()
{
SubjectType = 2,
SubjectName = "Name 2"
}
};
ViewBag.SubjectId = new SelectList(list, "SubjectId", "SubjectNameAndType");
现在,您将在DropDownList中看到正确的值。
@Html.DropDownListFor(m => m.MyValue, (SelectList)ViewBag.SubjectId, "Select...")