2014-01-14 26 views
0

我有一個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); 
     } 

回答

1

使用Items的詳細方法,如果你想獲得項目價值

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

     return View(item); 
    } 
+0

這不是下拉列表我想從這裏得到的值:)我想從這裏得到它: Wizeman1986

+0

@ Wizeman1986,更新回答 –

+0

非常感謝多Murali!我使用int Items並且工作正常:) – Wizeman1986

1

一個下拉只發送簡單的值。該名稱通常必須與方法簽名中的參數名稱相匹配。請記住它是名稱屬性,它是查詢字符串中的鍵,而不是id屬性。因此,本例中使用部門和@ Murali的答案中的項目。

試着改變你的細節的方法:

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

     return View(item); 
    } 
+0

爲什麼要改變'department'到'ItemTypeID'?你對'department'是正確的,MVC使用一個名字來綁定這個值,而不是id :) –

+0

嗯,也許我有一個brainfart。 :)我會恢復它。 – scheien

+0

這不是下拉列表,我想從中獲得值:) 我想從這裏得到它: Wizeman1986

相關問題