这是我的模型:
[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);
}
View :
<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,这样我就不必继续填充它了?
最佳答案
Model.Companies
不会被绑定(bind),因为它不在表单中,ModelBinder 正在查找表单中的输入或带有属性名称(在本例中为 Companies)的查询字符串值,但是您在 View 中没有使用该名称的字段,相反,您有一个名称为 CompanyId 的字段,这就是绑定(bind)属性 CompanyId
的原因。
保存您的公司列表并在 Post 操作中获取它的一个好方法是使用 TempData
,使用 TempData 您可以在操作中保存一个项目,它将对下一个可用行动。类似于 Session,但仅针对一个请求。
关于c# - 回发到 Controller 时,MVC SelectList 在模型中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30396552/