我希望从一个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()
答案 0 :(得分:1)
我创建了示例并在Github中上传
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”)