连接下拉列表中的两个字段

时间:2020-08-10 09:14:46

标签: asp.net asp.net-mvc asp.net-mvc-4

我有一个模型课

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"

我该怎么做?我用谷歌搜索,但找不到合适的解决方案。请帮忙!!!

1 个答案:

答案 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...")
相关问题