2016-06-22 51 views
0

我在我的应用程序中创建一个简单的搜索功能,我想使用KendoUI MultiSelect。我需要将参数传递给控制器​​,但它只会通过第一个选择,而不是全部。我怎样才能将多个参数传递给我的控制器?或者我的方法对这种类型的东西不正确?如何将多个参数传递给控制器​​?

这是我的代码。

的观点:

@using (Html.BeginForm()) 
{  
    @(Html.Kendo().MultiSelect() 
    .Name("vessel_type")    
    .Placeholder("-- Type --") 
    .AutoBind(false)    
    .BindTo(new List<string>() { 
      "AHTS", 
      "PSV", 
      "Tug" 
      })) 

    <input type="submit" value="Search" /> 
} 

我的控制器:

public ActionResult Index(string vessel_type) 
    { 
     var thevessels = from o in db.tbl_vessels 
         select o; 

     if (!String.IsNullOrEmpty(vessel_type)) 
     { 
      thevessels = thevessels.Where(x => 
       x.vessel_type.Contains(vessel_type)); 
     } 

     return View(thecvessels);    

    }  

正如你看到的,我接受来自vessel_type绳子,但我需要的用户选择它拿一样多能不止一个。有任何想法吗?

非常感谢

+0

你有没有想过传递一个数组/参数的数组并根据其长度解析数组中的值?这样你至少只能传递一个项目 – Thom

+0

首先,你的表单方法默认为'POST',所以你的控制器Action需要'[HttpPost]'属性,否则你需要改变你的'FormAction'到'GET'。其次,既然你正在创建一个'List '绑定到视图,为什么不接受控制器参数中的'List '? 'DefaultModelBinder'应该能够选择它,然后对传递给它的数据做些什么?你在使用强类型视图吗? –

回答

0

虽然它可能不是你可以使用$(“#vessel_type”)的干净的解决方案。数据(“kendoMultiSelect”)。值(),然后CONCAT结果转换成字符串和Ajax下来到你的控制器。你有没有尝试过使用string [] vessel_type呢?

相关问题