我使用剃刀填充模型列表创建下拉列表,然后将此列表传递给视图以填充下拉列表。下拉列表是正确创建的,但是当我将值发布到控制器的创建操作时,我没有得到下拉值。
模型,在IdCarBrand中我返回下拉值,其中填充了DropDownList列表:
public class CarModelModel
{
public int IdCarBrand { get; set; }
//Drop down
public IEnumerable<SelectListItem> DropDownList { get; set; }
}
然后我使用此方法填充列表,service只访问数据库:
public IEnumerable<SelectListItem> GetItemsDropDown()
{
SelectListItem listItem = null;
CarBrandService service = new CarBrandService();
var itemsList = service.GetAll().Select(x =>
new SelectListItem{
Value = x.Id.ToString(),
Text = x.Name
});
return new SelectList(itemsList, "Value", "Text");
}
并且在控制器中我有默认的创建操作
public ActionResult Create()
{
}
这里的模型变量是
public ActionResult Create([Bind(Include = "Id,Name,Description,URL,Email,Img")] CarModelModel brand)
{
if (ModelState.IsValid)
{
return RedirectToAction("Index");
}
return View(brand);
}
现在在视图中我已经有了这个代码来创建dropdrown:
@Html.DropDownListFor(model => model.IdCarBrand, Model.DropDownList, new { htmlAttributes = new { @class = "form-control" } })
呈现的html是:
<select name="IdCarBrand" id="IdCarBrand" htmlattributes="{ class = form-control }" data-val-required="The IdCarBrand field is required." data-val-number="The field IdCarBrand must be a number." data-val="true" class="valid">
<option value="1">Alfa Romeo</option>
<option value="2">Audi</option>
<option value="3">BMW</option>
<option value="4">Chery</option>
<option value="5">Chrevrolet</option>.......
总之,下拉显示完美。 我有两个问题:
1-在Create Action中,IdCarBrand返回null。
2-视觉上下拉列表没有采用类格式控件:
答案 0 :(得分:3)
在你的行动中..你没有包含它。
public ActionResult Create([Bind(Include = "Id,Name,Description,URL,Email,Img,IdCarBrand")] CarModelModel brand)
{
if (ModelState.IsValid)
{
return RedirectToAction("Index");
}
return View(brand);
}
通过创建包含列表,您已将其排除在外。
对于下拉列表..修改如下。
@Html.DropDownListFor(model => model.IdCarBrand, Model.DropDownList,new { @class = "form-control" })