2013-08-24 77 views
0

我对MVC非常陌生,并试图使用this example设置一系列级联下拉列表。如何从级联下拉列表中获取值使用ajax

但是我被卡住了一点,因为我不知道如何从第二个下拉列表中获取值并将其发送到控制器,当我按下相应的按钮时。

这是我的观点:

<script type="text/javascript"> 
    $('#list').change(function() { 
     var selectedClient = $(this).val(); 
     if (selectedClient != null && selectedClient != '') { 
      $.getJSON('@Url.Action("SelectC")', { clientID: selectedClient }, function (client) { 
       var campaingSelect = $('#clist'); 
       campaingSelect.empty(); 
       $.each(client, function(index, clients) { 
        campaingSelect.append($('<option/>', { 
         value: clients.value, 
         text: clients.text 
        })); 
       }); 
      }); 
     } 
    }); 
</script> 
@using (Html.BeginForm("CreateNewCampaign", "Home", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    @Html.LabelFor(m => m.alreadyCreatedCampaignName, "Name:") 
    @Html.DropDownList("clist","-- Select Client -2-") 
    <input type="Submit" name="button" value="Select" class="btn btn-primary" /> 
} 

控制器:

public ActionResult SelectC(int clientId, CampaignModel model, FormCollection form) 
     { 
      Session["ClientID"] = clientId; 

      ViewBag.ClientName = "You're using: " + Session["ClientName"]; 

      var CampaignInf = CampaignManagementService.GetCampaigns((string) Session["ticket"], clientId); 
      List<AlreadyCreatedCampaignList> itemas = new List<AlreadyCreatedCampaignList>(); 
      foreach (var element in CampaignInf) 
      { 
       itemas.Add(new AlreadyCreatedCampaignList() {CampId = element.Key, CampName = element.Value}); 
      } 

      var listOfCam = new SelectList(itemas, "campID", "campName", 1); 
      return Json(listOfCam.Select(x => new {value = x.Value, text = x.Text}), JsonRequestBehavior.AllowGet); 
     } 

我想要得到的值到其他控制器,并且我不知道的正确的方式去这样做。

+0

的问题并不是那么清楚,哪里是要根据第一个下拉筛选第二个下拉按钮。 – Sravan

+0

Button is here @ Html.DropDownList(“clist”,“ - Select Client -2-”) 通过筛选一切正常,但如何从其他下拉菜单中获取价值并将其传输到控制器 – piotr

回答

0

你可以通过给它ID并调用$("#id").val();来获得dropdownlist的值,然后你可以通过ajax将它传递给控制器​​。

这里是我的,试试吧
public ActionResult ActionName(string dropdown_value){ //your code }

<script> 
$(document).ready(function(){ 
$("submit").click(function(){ 
$.ajax({ 
    url:"Controller/ActionName", 
    datatype: "POST", 
    data: { dropdown_value : $("#clist").val() }, 
    success : function(){ //your code if success } 
}); 
}); 
}); 
</script>