2017-04-03 36 views
2

如何在選擇第一個下拉列表時將數據綁定到第二個下拉列表?如何在MVC中的下拉更改中調用操作名稱?

我已經使用強類型視圖綁定第一個dropdownlist。

現在如何調用動作名稱,並綁定第二個dropdownlist選擇第一個dropdownlist?

<tr> 
      <td>Select Make:</td> 
      <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList, new { @class = "form-control", @onchange = "FillModel()" })</td> 
     </tr> 
     <tr> 
      <td>Select Model</td> 
      <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList)</td> 
     </tr> 

操作名稱

public ActionResult FillModel(int MakeId) 
     { 
      var makedata = objVehicleContext.VehicleMakes.Where(m=>m.MakeId==MakeId); 

      ViewBag.makelist = makedata.ToList(); 
      return View(); 
     } 
+0

您需要使用ajax。參考[這個答案](http://stackoverflow.com/questions/33247717/how-to-keep-cascade-dropdownlist-selected-items-after-form-submit/33248183#33248183)的例子創建級聯下拉列表 –

回答

0

你可以把jQuery函數在下拉列表中的變化。對於實施例

<tr> 


     <td>Select Make:</td> 
       <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList, new { @class = "form-control", @onchange = "FillModel()", id="ddlMake" 

    })</td> 
     </tr> 
     <tr> 
      <td>Select Model</td> 
      <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList,new {@id="ddlModel"})</td> 
     </tr> 

這是一個簡單的解決方案來調用下拉變化的操作方法。

$(document).ready(function(){ 
    $("#ddlMake").change(function(){url.action('Controller Name','Action Method Name')}) 
}) 

但對於進一步的效果您必須調用Ajax調用方法和獲取數據。之後,在方法成功之後,您必須在ddlModel上添加Data的其餘部分。就像它。

$(document).ready(function(){ 

    $("#ddlMake").change(function(){ 
    $.ajax({ 
     type:'POST', 
     url:'url.action('Controller Name','Action Method Name')' 
     data:{id:$('#ddlMake').val()}, 
     sucess:{ 
      $("#ddlModel").append('<option value="' + ModelId.Value + '">' + Model.Text + '</option>'); 
     } 
     });)}) 
     }) 

,你需要使用控制器

public JsonResult GetModel() 
    { 
     //your dropdown datasource 
     return json(ddlModeldatasurce,JsonRequestBehavior.AllowGet); 
    } 
0

這樣做,如果我明白你的問題正確的,那麼你只需做簡單的jquery.post

$("#ddlMake").change(function() { 
      $.post("controller/ActionName", function (data) { 
       $.each(data, function (val, txt) { 
        $("#ddlModel").append('<option value="' + val + '">' + txt + '</option>'); 
       }); 
      }); 
     }); 

並在控制器中:

public Actionresult GetModel() 
    { 
     //your dropdown datasource 
     return json(ddlModeldatasurce); 
    } 
+0

有沒有辦法做到不使用Ajax和JQuery? –

+0

是的,你也可以使用Viewbag來做到這一點,但它會導致你完整的回發。 –

相關問題