加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 将ExtJs 4网格过滤器信息绑定到asp.net mvc动作

发布时间:2020-12-16 03:26:02 所属栏目:asp.Net 来源:网络整理
导读:将ExtJs 4网格过滤器信息绑定到asp.net mvc动作参数的最佳方法是什么? 我写了这些助手类: public class ExtFilterInfo{ public string Field { get; set; } public ExtFilterData Data { get; set; }}public class ExtFilterData{ public string Type { ge
将ExtJs 4网格过滤器信息绑定到asp.net mvc动作参数的最佳方法是什么?

我写了这些助手类:

public class ExtFilterInfo
{
    public string Field { get; set; }
    public ExtFilterData Data { get; set; }
}

public class ExtFilterData
{
    public string Type { get; set; }
    public string Value { get; set; }
}

这是行动:

public ActionResult Grid(int start,int limit,string sort,ExtFilterInfo[] filter)

QueryString看起来像这样:

_dc:1306799668564
filter%5B0%5D%5Bfield%5D:Nome
filter%5B0%5D%5Bdata%5D%5Btype%5D:string
filter%5B0%5D%5Bdata%5D%5Bvalue%5D:nu
page:1
start:0
limit:20

解决方法

自定义模型绑定器看起来可以适合账单:

public class ExtFilterInfoModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
    {
        var filter = (ExtFilterInfo)base.BindModel(controllerContext,bindingContext);

        var field = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[field]");
        if (field != null)
        {
            filter.Field = field.AttemptedValue;
        }

        var type = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[data][type]");
        if (type != null)
        {
            if (filter.Data == null)
            {
                filter.Data = new ExtFilterData();
            }
            filter.Data.Type = type.AttemptedValue;
        }

        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[data][value]");
        if (value != null)
        {
            if (filter.Data == null)
            {
                filter.Data = new ExtFilterData();
            }
            filter.Data.Value = value.AttemptedValue;
        }

        return filter;
    }
}

可以在Application_Start中注册:

ModelBinders.Binders.Add(typeof(ExtFilterInfo),new ExtFilterInfoModelBinder());

现在应该正确绑定控制器操作作为参数的过滤器集合.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读