Kendo ui 剑道UI MVC向动作方法发送多选数据值
位于的kendouiajax绑定文档描述了将多个数据参数传递给动作方法,但它没有处理传递数组(如MultiSelect值)的问题 在下面的示例中,如果multisel设置为类似237896的字符串,则控制器将接收sitesFilter=237896。但是,如果将multisel设置为如下所示的MultiSelect值,则控制器将接收sitesFilter=null 使用MVC包装器将所有MultiSelect值发送到Action方法的正确方法是什么Kendo ui 剑道UI MVC向动作方法发送多选数据值,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,位于的kendouiajax绑定文档描述了将多个数据参数传递给动作方法,但它没有处理传递数组(如MultiSelect值)的问题 在下面的示例中,如果multisel设置为类似237896的字符串,则控制器将接收sitesFilter=237896。但是,如果将multisel设置为如下所示的MultiSelect值,则控制器将接收sitesFilter=null 使用MVC包装器将所有MultiSelect值发送到Action方法的正确方法是什么 .DataSource(dataSou
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Read(read => read.Action("Documents_Read", "Document")
.Type(HttpVerbs.Post)
.Data("getCriteria"))
function getCriteria() {
var multisel = $("#sites").data("kendoMultiSelect").value();
return {
sitesFilter: multisel
};
}
public ActionResult Documents_Read([DataSourceRequest] DataSourceRequest request, string sitesFilter=null)
{
return Json(GetDocuments(sitesFilter).ToDataSourceResult(request), JsonRequestBehavior.DenyGet);
}
编辑:getCriteria应将数据转换为字符串,如下所示:
function getCriteria() {
var multisel = $("#sites").data("kendoMultiSelect").value().toString();
return {
sitesFilter: multisel
};
我的解决方案不使用Ajax,但总体上描述了多选择值到控制器的传输!Ajaxify它,模型传输应该同样工作 .cshtml筛选器视图:带有选择字段的表单,用于将所选值发布到控制器。Products是具有属性ID和DisplayName的产品类型列表 Model.cs:使用的特定模型
public class SearchLicenseTermFilterViewModel
{
public SearchLicenseTermFilterViewModel()
{
ProductIds = new List<Guid?>();
}
public List<Guid?> ProductIds { get; set; }
}
在Controller Action.jpeg中接收到POST数据:您将看到Kendo.MultiSelect中select条目的GUID填充列表
var multisel=$sites.datakendoMultiSelect.value;未被转换为字符串
var multisel=$sites.datakendoMultiSelect.value.toString;解决了问题。Florian-谢谢。通过将multiselect数据值转换为字符串,我的问题得到了解决。控制器操作中接收到的POST数据。jpeg:这应该是图像吗?你能显示你如何发布你的数据吗?
[HttpPost]
public ActionResult SearchForLicenseTerm(SearchLicenseTermFilterViewModel searchLicenseTermFilterViewModel)
{
// Search logic
}
public class SearchLicenseTermFilterViewModel
{
public SearchLicenseTermFilterViewModel()
{
ProductIds = new List<Guid?>();
}
public List<Guid?> ProductIds { get; set; }
}