我有一个viewmodel,我在Create get动作中构建,
public class SiteAdminCreateViewModel
{
public int CustomerId { get; set; }
public string ContactName { get; set; }
[Required(ErrorMessage = "A contact number is Required")]
public string ContactNo { get; set; }
public IEnumerable<SelectListItem> CustomerNames { get; set; }
}
public ViewResult Create(SiteAdminCreateViewModel model)
{
var query = from cs in repository.CustomerSites
select new SiteAdminCreateViewModel
{
CustomerId = cs.Customer.CustomerId,
ContactName = cs.ContactName,
ContactNo = cs.ContactNo,
CustomerNames = ??
};
return View(query.ToList());
}
在viewmodel中我有一个定义为CustomerNames的选择列表,我希望能够使用该选择列表插入从Customers表中获取的CustomerId值(也在viewmodel中定义),该表是一个单独但相关的实体,
有谁可以帮助我如何设置控制器中的选择列表以从Customer实体接收CustomerNames列表?
当我更改其声明以接受viewmodel时,我的视图会抛出异常,
The model item passed into the dictionary is of type 'System.Data.Entity.Infrastructure.DbQuery`1[CustomerOrders.WebUI.Models.SiteAdminCreateViewModel]', but this dictionary requires a model item of type 'CustomerOrders.WebUI.Models.SiteAdminCreateViewModel'.
感谢任何帮助/建议。
答案 0 :(得分:3)
public ActionResult MyController(SiteAdminCreateViewModel model)
{
var query = from cs in repository.CustomerSites
select new SiteAdminCreateViewModel
{
Value= cs.Customer.CustomerId,
Text= cs.ContactName
};
ViewBag.CustomerNames=query.ToList();
return View(model);
}
内部视图
@Html.DropDownListFor("CustomerNames")