我正在使用远程加载数据的Telerk Kendo UI网格.传递给我的action方法的QueryString如下所示: –
take=10&skip=0&page=1&pageSize=10&sort[0][field]=value&sort[0][dir]=asc
我试图找出如何将sort参数绑定到我的方法?是否可以或者我需要手动枚举QueryString集合还是创建自定义绑定器?
到目前为止,我试过这个: –
public JsonResult GetAllContent(int page,int take,int pageSize,string[] sort) public JsonResult GetAllContent(int page,string sort)
但排序始终为空.有谁知道我怎么能做到这一点?
我可以回退到Request.QueryString使用,但这有点像kludge.
var field = Request.QueryString["sort[0][field]"]; var dir = Request.QueryString["sort[0][dir]"];
解决方法
您可以使用一组字典:
public ActionResult Index( int page,IDictionary<string,string>[] sort ) { sort[0]["field"] will equal "value" sort[0]["dir"] will equal "asc" ... }
然后定义自定义模型绑定器:
public class SortviewmodelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { var modelName = bindingContext.ModelName; var keys = controllerContext .HttpContext .Request .Params .Keys .OfType<string>() .Where(key => key.StartsWith(modelName)); var result = new Dictionary<string,string>(); foreach (var key in keys) { var val = bindingContext.ValueProvider.GetValue(key); result[key.Replace(modelName,"").Replace("[","").Replace("]","")] = val.AttemptedValue; } return result; } }
将在Global.asax中注册:
ModelBinders.Binders.Add(typeof(IDictionary<string,string>),new SortviewmodelBinder());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。