从ModelBinder中的ValueProvider获取密钥

时间:2014-12-18 06:27:58

标签: asp.net-mvc-4 model-binding

我有来自客户端的AJAX请求,它将json对象POST到我的ASP.NET MVC 4服务器,导致在 ValueProvider 中填充 DictionaryValueProvider< object>
现在,我事先并不知道所有的字段名称(在客户端有动态字段添加功能),所以我需要在我的自定义ModelBinder中将它们打包到某种字典中(从 DefaultModelBinder 派生) )。

我不能从 controllerContext 表单值或查询字符串中获取值,也不能直接从 DictionaryValueProvider 获取 IValueProvider.GetValue(Key)< /强>

如何在ModelBinder中访问ValueProvider中的所有键呢?

1 个答案:

答案 0 :(得分:-2)

正如您所说,ValueProvider需要键来获取值,但您可以使用 controllerContext.HttpContext.Request.Form.AllKeys 通过自定义模型绑定器的controllerContext访问所有键。 #39;任何用途。

e.g。

    protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
    {
            string[] allKeys = controllerContext.HttpContext.Request.Form.AllKeys;