如何从下拉列表中获取所选项目并将其提交到我的详细信息视图?

我有一个mvc剃刀forms。 我想要的是从项目下拉列表中提交用户的选择并导航到详细信息视图,以访问所选项目的信息。

目前,当我单击提交按钮时,我成功导航到详细信息视图,但绝对没有显示数据。

你能帮我么?

视图

@using (Html.BeginForm("Details", "Bookings", FormMethod.Post)) { 
Type/Item @Html.DropDownList("department", ViewBag.ItemTypesList as SelectList, "Select a Type", new { id = "ItemTypeID" })

} $('#ItemTypeID').on('change', function () { $.ajax({ type: 'POST', url: '@Url.Action("GetItemTypeForm")', data: { itemTypeId: $('#ItemTypeID').val() }, success: function (results) { var options = $('#ItemsID'); options.empty(); options.append($('').val(null).text("- Select an Item -")); $.each(results, function () { options.append($('').val(this.ItemsID).text(this.Value)); }); } }); });

控制器:

  public ActionResult Details(string id) { var item = db.Items.Find(id); return View(item); } [HttpPost] public JsonResult GetItemTypeForm(string itemTypeId) { //pseudo code var data = from s in db.Items where s.ItemType.ItemTypeName == itemTypeId select new { Value = s.ItemName, ItemsID = s.ItemId }; return Json(data); } 

如果要获取Items值,请使用Details in Details方法

  public ActionResult Details(int Items) { var item = db.Items.Find(Items); return View(item); } 

下拉列表仅发送简单值。 名称通常必须与方法签名中的参数名称匹配。 请记住,name属性是查询字符串中的键,而不是id属性。 因此,在这个例子中使用部门和@ Murali的答案中的项目。

尝试将您的详细信息方法更改为

  public ActionResult Details(string department) { var item = db.Items.Find(department); return View(item); }