如何在控制器的[HttpPost]中获取@DropDownListFor的值

时间:2017-10-02 08:51:39

标签: c# asp.net-mvc asp.net-mvc-4

我无法将@ Html.DropDownListFor的值输入控制器。 我是MVC的新手。 我在这里添加代码。

模型

 public IEnumerable<System.Web.Mvc.SelectListItem> CatID { get; set; }

控制器

public ActionResult Motors()
{
 ViewBag.CatID = new SelectList(db1.motors.ToList(), "id", "cat");
 return View();
}

查看

//(在视图 DATA 正确地从数据库加载)

 @Html.DropDownListFor(m => m.CatID, ViewBag.CatID as SelectList, new { @class = "form-control" })

控制器发布后返回控制器)

[HttpPost]

    public ActionResult Motors(MotorInput collection)

         {
            MotorInput obj = new MotorInput
               {
               CatID = collection.CatID
               }; 
              return View(collection);
         }

我正在寻找一种方法来获取@ Html.DropDownListFor的值,从视图中选择控制器。

Screenshot of Model

Screenshot of Controller after post

1 个答案:

答案 0 :(得分:0)

我得到了上述问题的解决方案。

<强>模型(MotorInput.cs)

public int CatID { get; set; }

控制器(UserController.cs)//将View页面设置加载到数据库中的viewBag

public ActionResult Motors()
        {
            this.ViewBag.CatID = new SelectList(this.db1.motors, "id", "cat");
            return View();
        }

查看(Motors.cshtml)

@model BLL.Models.MotorInput
@{
    ViewBag.Title = "Motors";
    Layout = "~/Views/Shared/_UserLayout.cshtml";
}

    @using (Html.BeginForm())
    {
         @Html.DropDownList("CatID", (SelectList)ViewData["CatID"], "-- Select Category --", new { @class = "form-control" })


     <input type="submit" value="Create">
    }

控制器(Usercontroller.cs)//发布后。

[HttpPost]
public ActionResult Motors(MotorInput collection)// MotorInput is the class where CatId is set as int.(Model class)
           {
             MotorInput obj = new MotorInput
                       {
                           CatID = collection.CatID,
                       };
                    return View(collection);
          }

这有助于从视图中获取控制器的下拉值。