2011-02-11 52 views

回答

3

這並不像你想象的那麼容易,因爲從html的角度來看,只有在下拉列表中選擇的值是在提交時發送到服務器的值。

但是,如果它是您使用jQuery將數據作爲json發送的替代方法,則可以序列化列表框並將其發送到與您的模型一起的動作。

一種方式來做到這一點是這樣的:

假設您在任何給定的控制器

public ActionResult MyAction(string myDropDown, string myDropDownValues)

以下行動和你有要提交

此Ajax表單
@using (Ajax.BeginForm("MyAction", new AjaxOptions())) 
{ 
    @Html.Hidden("myDropDownValues") 
    <select name="myDropDown" id="myDropDown"> 
     <option value="0">First</option> 
     <option value="1">Second</option> 
     <option value="2">Third</option> 
     <option value="3">Fourth</option> 
     <option value="4">Fifth</option> 
    </select> 
    <input type="submit" id="submit" /> 
} 

你現在要做的是掛鉤到這樣的表單提交事件:$('form').submit(function(){});

如果您的頁面上有多個表單,則應該使用更好的選擇器。在這個提交事件中,您可以使用.each()方法遍歷您的下拉列表,然後在其中編寫json。

一旦你創建了你的json,你可以將它添加到一個隱藏的字段,以便更容易在服務器端處理。

它最終可能sometwhat看起來像這樣:

<script> 
    $(document).ready(function() { 
     $('form').submit(function() { 
      var json = ""; 
      $("#myDropDown option").each(function() { 
       value = $(this).val() 
       text = $(this).html() 

       if (json.length != 0) json += ","; 

       json += value + ":" + text; 
      }); 

      $('#myDropDownValues').val(json.toString()); 
     }); 
    }); 
</script> 

當我提交表單現在字符串myDropDownValues有以下內容:

0:First,1:Second,2:Third,3:Fourth,4:Fifth

+0

@Null Pointer,啊,我的錯誤。但很好,你可以適應這個想法:) – 2011-02-11 08:32:12

0

試試這個

for (int i = 0; i < listBox1.Items.Count; i++) { 
    listBox1.SelectedIndex = i; 
    MessageBox.Show(listBox1.SelectedItem.ToString()); 
} 
相關問題