我有一个mvc剃刀形式。我想要的是从项目下拉列表中提交用户的选择并导航到详细信息视图,以访问所选项目的信息。
目前,当我点击提交按钮时,我会成功导航到详细信息视图,但绝对没有数据显示在那里。
你能帮帮我吗?
查看
@using (Html.BeginForm("Details", "Bookings", FormMethod.Post))
{
<fieldset>
<legend> Type/Item</legend>
<label for="Items">Item Types </label>
@Html.DropDownList("department", ViewBag.ItemTypesList as SelectList, "Select a Type", new { id = "ItemTypeID" })
<div id="ItemsDivId">
<label for="Items">Items </label>
<select id="ItemsID" name="Items"></select>
</div>
<p>
<input type ="submit" value="Submit" id="SubmitID" />
</p>
</fieldset>
}
<script type="text/javascript">
$('#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($('<option />').val(null).text("- Select an Item -"));
$.each(results, function () {
options.append($('<option />').val(this.ItemsID).text(this.Value));
});
}
});
});
</script>
控制器:
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);
}
答案 0 :(得分:1)
下拉列表仅发送简单值。名称通常必须与方法签名中的参数名称匹配。请记住,name属性是查询字符串中的键,而不是id属性。因此,在这个例子中使用了部门,在@ Murali的回答中使用了项目。
尝试将您的详细信息方法更改为:
public ActionResult Details(string department)
{
var item = db.Items.Find(department);
return View(item);
}
答案 1 :(得分:1)
Items
public ActionResult Details(int Items)
{
var item = db.Items.Find(Items);
return View(item);
}