asp.net mvc从viewmodel下拉列表

时间:2016-09-09 21:01:34

标签: c# asp.net-mvc

我希望从一个viewmodel填充一个下拉列表,该数据来自数据库。以下是我的项目的简短说明:

模型

public partial class Model1
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

Model2 - 这将是填充下拉列表的信息

public partial class Model2
{
   public string typeID { get; set; }

   public string typeValue { get; set; }
}

然后将这两个模型连接到ViewModel。

视图模型

public class viewModel
{
    public Model1 Model1s { get; set; }

    public Model2 Model2s { get; set; }
}

此时我无法使用viewmodel创建下拉列表。我在这个网站上梳理了大约50个例子,但是我不能让我的工作。我知道该视图包含以下内容:

@Html.DropDownListFor(m => m.MarketingCampaign , new SelectList(Model.MarketingCampaignType, "CampaignTypeTitle", "CampaignTypeId"), new { id = "yourElementIdIfAny", @class = "yourClassNameIfAny" })

将是必需的。我也试图直接将Value和Text输入到模​​型中的一个字段中,这样我就可以轻松地从该模型中提取信息,然后传递给控制器​​,而不是使用这种方法:

ViewBag.DropDownList = dbContext.Model2.ToList();

并通过传回表单并使用以下方式检索该信息:

string value = form["DropDownList"].ToString()

1 个答案:

答案 0 :(得分:1)

我创建了示例并在Github中上传

Source code

public ActionResult Index()
    {
        //IsName >> Is name DropDownList
        //typeID >> Is data value
        //typeValue >> Is data text
        ViewBag.IsName = new SelectList(_dbContext.Model2.ToList(), "typeID", "typeValue");
        return View();
    }
    public ActionResult ByViewModel()
    {
        List<ViewModel> items = _dbContext.Model2.Select(m => new ViewModel()
        {
            typeID = m.typeID,
            typeValue = m.typeValue
        }).ToList();

        //IsName >> Is name DropDownList
        //typeID >> Is data value
        //typeValue >> Is data text
        ViewBag.IsName = new SelectList(items, "typeID", "typeValue");
        return View();
    }
  

@ Html.DropDownList( “IsName”)