我一直在試圖找出如何從一個下拉列表翻新值回傳給視圖與結果asp.net mvc4下拉列表返回模型顯示在同一視圖
控制器顯示相同的下拉列表:
//
// GET: /ProductByID/
[HttpGet]
public ActionResult ProductById()
{
ViewBag.IDNumbers = ddlItems;
return View();
}
//
// POST: /ProductByID/
[HttpPost]
public ActionResult ProductById(FormCollection formdata)
{
string selected = formdata["IDNumbers"];
int id = int.Parse(selected);
Product p = items.GetByID(id);
return View(p);
}
的觀點:
@model ProductsMVC_Basic.Models.Product
@{
ViewBag.Title = "Product By Id";
}
<script src="~/Scripts/jquery-1.7.1.js"></script>
<script>
$(function() {
$("#IDNumbers").change(function() {
if ($("#IDNumbers").val() != "") {
this.form.submit();
}
});
});
</script>
<div>
@using (Html.BeginForm("ProductById", "Home", FormMethod.Post))
{
@Html.DropDownList("IDNumbers", "--Select One--")
}
</div>
這工作只要填充下拉列表和發送FORMDATA回控制器。我的問題是如何在後視圖中顯示模型數據,以便顯示下拉菜單並顯示模型數據,如名稱和類別等。
每次我回發到相同視圖時,出現錯誤聲明「沒有包含'IDNumbers'鍵的'IEnumerable'類型的ViewData項。」在PostView中。
謝謝@hungdoan。雖然#2和#3有助於未來的參考,但它不能解決我在顯示返回的產品的同一頁面上的問題。這是非常基本的沒有數據庫支持(使用ProductList類來模擬數據庫)我試着檢查模型是否爲null,如@if(!(Model.Equals(null))),但這只是引發異常,檢查模型。有什麼建議麼? – jbolt 2013-02-19 14:44:42
你與模型數據就像回到自己的看法: '返回查看(邁德特);',然後綁定模型的數據類型通過這種方式:'@model string'(在你的[查看[.cshtml,..)。或者你可以綁定你的數據到ViewBag(這將更容易檢查空值) – hungdoan 2013-02-19 15:14:33