Asp.net mvc 如何在mvc中填充下拉列表并将其id传递给控制器

Asp.net mvc 如何在mvc中填充下拉列表并将其id传递给控制器,asp.net-mvc,view,dropdown,Asp.net Mvc,View,Dropdown,我有这个控制器的动作 [HttpGet] public ActionResult CreateTipoProyecto() { ViewBag.Categorias = _dbContext.Categoria.ToList(); return View(); } [HttpPost] public ActionResult CreateTipoProyecto(TipoProyectoDto tipoProyecto

我有这个控制器的动作

  [HttpGet]
    public ActionResult CreateTipoProyecto()
    {
        ViewBag.Categorias = _dbContext.Categoria.ToList();
        return View();
    }
    [HttpPost]

    public ActionResult CreateTipoProyecto(TipoProyectoDto tipoProyectoDto, Guid itemID)
    {
             //do something....    
        return View();
    }
我试图在我的视图中创建一个下拉列表,其中所选的值ID由post操作接收

 @Html.DropDownList("CategoriaId", (IEnumerable<EbanTabs.Models.Categoria>)ViewBag.Categorias)
//more things here...
//the post button here

我做错了什么?谢谢

首先创建一个选择列表

[HttpGet]
public ActionResult CreateTipoProyecto()
{
    ViewBag.Categorias = new SelectList(_dbContext.Categoria, "CategoriaId", "column for drop down items");
    return View();
}
在视图中,您使用razor创建下拉列表,在post操作中,您将从对象(如TipoProyectoDto)获取id。我使用以下razor语法来满足我的下拉需求

@Html.DropDownList("CategoriaId", null, "Please select category", htmlAttributes: new { @class = "form-control col-md-2"})
表单控件和col-md-2是css类,因此它们可能对您有用,也可能对您不有用

TipoProyectoDto是否包含名为Category Aid的属性?您的代码会抛出一个异常,因为DropDownList的第二个参数是IEnumerable,而不是IEnumerable