从MVC 5中的模型/数据库填充DropDownList

时间:2015-10-21 09:54:41

标签: c# asp.net asp.net-mvc

我一直在寻找近3天来找到解决以下问题的方法。 我只是想在DropDownList中添加RegisterViewModel (Identity)。 在用户注册期间,我需要提示Gender

我已在表格中插入以下内容。

Code = F
Definition = Female
-------------------
Code = M
Definition = Male

当我在GenderDDController中直接生成DropDownList时,它的视图效果很好但是只要我在RegisterViewModel,我就没有机会因为我无法在Register.cshtml (View)中引用多个模型。

我还应该表明我是MVC的新手,我确信这是我现在看起来很困惑的唯一原因。

GenderDD |模型

public partial class GenderDD
{
    public int Id { get; set; }

    [StringLength(1)]
    public string Code { get; set; }

    [StringLength(50)]
    public string Definition { get; set; }

    public DateTime? CreateDate { get; set; }

    [StringLength(50)]
    public string CreatedBy { get; set; }

    public bool Deleted { get; set; }

    public DateTime? UpdateDate { get; set; }

    [StringLength(50)]
    public string UpdatedBy { get; set; }
}

RegisterViewModel |控制器

[AllowAnonymous]
public ActionResult Register()
{
   ViewData["GenderList"] =
   Enum.GetValues(typeof (GenderDD))
     .Cast<GenderDD>()
     .Select(c => new SelectListItem {Text = c.ToString(), Value = c.ToString()});

   return View();
}

2 个答案:

答案 0 :(得分:3)

您的模型中可以有多个类Register.cshtml (View)

只需创建一个如下所示的基类,并将其作为该视图的模型引用,这样就可以访问两个模型。

Public Class RegisterViewModel()
{
    public ModelName ModelName  {get;set;}
    public ModelName2 ModelName2  {get;set;}
}

答案 1 :(得分:2)

使用viewbag传递数据,如下所示, 你可以用控制器写

var genderlist = new List<SelectListItem>
{
  new SelectListItem { code = "M", name = "Male" },
  new SelectListItem { code = "F", name = "Female" }                
};
viewbag.genderlist=genderlist;

您可以在视图中书写

@Html.DropDownListFor(model => model.gender, new SelectList(ViewBag.genderlist, "code", "name"))