C# MVC Drop溺水未在控制器中获取值

C# MVC Drop溺水未在控制器中获取值,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我正在使用razor创建一个下拉列表,填充模型列表,然后将此列表传递给视图以填充下拉列表。下拉列表创建正确,但是当我将值发布到控制器的创建操作时,我没有得到下拉列表值 在IdCarBrand I中,模型返回下拉值,该值由列表DropDownList填充: public class CarModelModel { public int IdCarBrand { get; set; } //Drop down public IEnumerable<SelectListI

我正在使用razor创建一个下拉列表,填充模型列表,然后将此列表传递给视图以填充下拉列表。下拉列表创建正确,但是当我将值发布到控制器的创建操作时,我没有得到下拉列表值

在IdCarBrand I中,模型返回下拉值,该值由列表DropDownList填充:

public class CarModelModel
{
    public int IdCarBrand { get; set; }
    //Drop down
    public IEnumerable<SelectListItem> DropDownList { get; set; }
}
这里的模型变量是

    public ActionResult Create([Bind(Include = "Id,Name,Description,URL,Email,Img")] CarModelModel brand)
    {
        if (ModelState.IsValid)
        {

            return RedirectToAction("Index");
        }

        return View(brand);
    }
现在在视图中,我有以下代码来创建Drop溺水:

@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-在创建操作中,IdCarBrand返回null


2-从视觉上看,下拉列表中没有类窗体控件:

。。你没有包括在内

  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" })

您有一个
[Bind]
属性,它排除了属性
IdCarBrand
(它不在
包含
属性列表中)您能详细解释一下吗,我不明白。您也不需要创建
选择列表
两次。-它可以是一行代码
返回新的SelectList(service.GetAll(),“Id”,“Name”)绑定到模型时,
[Bind(Include=“…”)]
指定要包括的属性。所有不在列表中的属性都被排除在外(因此您的属性
IdCarBrand
未绑定)。注意:默认情况下,所有属性都已绑定,因此您只需删除
[Bind]
属性即可。
  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" })