在MVC 5中从模型/数据库填充下拉列表

本文关键字:数据库 填充 下拉列表 模型 MVC | 更新日期: 2023-09-27 18:18:48

为了找到解决以下问题的方法,我已经搜索了将近3天。我只是想在RegisterViewModel (Identity)中加入一个DropDownList。在用户注册时,我需要提示Gender

我已经在表中插入了以下项目。

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

当我直接在GenderDDController内生成下拉列表时,它的视图可以完美地工作,但只要我在RegisterViewModel,我就没有机会,因为我不能在Register.cshtml (View)中引用多个模型。

我还应该指出我是MVC的新手,我敢肯定这是我现在看起来很困惑的唯一原因。

GenderDD | Model

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 | Controller

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

在MVC 5中从模型/数据库填充下拉列表

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

简单地创建一个基类,如下所示,并将其引用为该视图的Model,这将使您可以访问两个模型。

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

使用viewbag传递如下数据:你可以输入controller

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

你可以写在view

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