这是我的模特:
[Display(Name = "Company")]
public int CompanyId { get; set; }
public SelectList Companies { get; set; }
为视图设置数据
[HttpGet]
[AllowAnonymous]
public ActionResult Index()
{
var model = new Ticket
{
Companies = new SelectList(new List<SelectListItem> { new SelectListItem { Text = "0", Value = "0" } }, "Value", "Text")
};
return View(model);
}
观点:
<div class="form-group">
@Html.LabelFor(m => m.CompanyId, new { @class = "col-md-6 col-md-pull-1 control-label" })
<div class="col-md-3 col-md-pull-1">
@Html.DropDownListFor(m => m.CompanyId, Model.Companies, new { @class = "selectpicker form-control" })
</div>
</div>
结果:
如何将SelectList发布回Controller,以便我不必继续填充它?
答案 0 :(得分:1)
Model.Companies
不会被绑定,因为不在表单中,ModelBinder正在寻找表单中的输入或查询字符串值与属性的名称(在这种情况下公司)但你没有在具有该名称的视图中,您有一个名为CompanyId的字段,这就是为什么属性CompanyId
被绑定。
保存公司列表并在Post操作中获取它的一个好方法是使用TempData
,通过TempData,您可以将一个项目保存在一个操作中,它将可用于下一个操作。就像Session一样,但只是一个请求。