2011-06-29 29 views
3

喜的朋友,我想多选择的价值观传递给控制器​​,但我认为只传递单一选择我的代码是在这里 公众的ActionResult指数() {ASP MVC如何passs多选择的值到控制器

 var location = new[]{ 

        "select","Hyderabad","Tirupati","Vijayawada","Vishakapatnam","Itanagar","Dispur",   
"Guwahati","Raipur","Goa","Ahmedabad","Bharuch", 
     "Godhra","Jamnagar","Kheda","Rajkot","Surat","Vadodara","Faridabad","Gurgaon","Shimla","Dra 
ss","Hiranagar","Poonch","Dhanbad","Ranchi","Bangalore","Hassan","Hubli","Karwar","Mangalore","Mysore","Udupi","Alappuzha","Kannur", 
"Kochi","Kollam","Kottayam","Kozhikode","Palakkad","Pathanamthitta","Thiruvananthapuram","Thrissur","Bhopal","Indore","Aurangabad", 
"Mumbai","Nagpur","Nasik","Pune","Thane", 
"Imphal","Shillong","Aizawl","Kohima","Bhubaneswar","Rourkela","Amritsar","Chandigarh","Jalandhar","Ludhiana","Jaipur","Jodhpur","Udaipur","Gangtok","Chennai","Coimbatore","Karur","Madurai","Thirunelveli","Trichi","Agartala","Delhi" ,"Pondicherry","Allahabad","Lucknow","Varanasi","Kanpur","Durgapur","Kharagpur","Kolkata" 

       }; 
     var Location = from d in location orderby d ascending select d; 

     ViewData["Location"] = new MultiSelectList(Location); 

视图形式代码

<% using(Html.BeginForm("candidatesearch","Process",FormMethod.Post)){ %> 
<%:Html.ListBox("location", ViewData["Location"] as MultiSelectList)%><br /> 
<input id="location" type="submit" value ="Search"/> 

另一动作方法是

public ActionResult candidatesearch(string location) 
    { 
string rg = ""; 
     string[] candidatelocation = location.Split(','); 
       for (int i = 0; i <= candidatelocation.Length;i++) 
       { 
        rg=rg+candidatelocation[i]; 

       } 
       Response.Write(rg); 
} 

但该控制器只能得到单一的价值,我可以选择多个值

回答

6

变化

public ActionResult candidatesearch(string location) 

public ActionResult candidatesearch(string[] location) 

列表中的每个项目应在数组中的索引。而不是你的分割,你可以这样做:

foreach(var item in location) 
{ 
    //do something with item 
} 

希望这会有所帮助。相反,以上回答的

+0

它工作正常谢谢克里斯 – sandy

+0

只记得选择回答:) – Chris

0

可以使用

 public ActionResult candidatesearch(FormCollection formValues) 
     { 

       string[] location = formvalues["Your_ListBox_value"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); 

      } 

,如果你想在你的控制器视图访问多个表单值这是更为有用。使用Firebug查看ListBox,复选框等的生成ID。如果您发现这个答案有用,那么请将其标记为答案,以便其他人可以获益。