我有来自客户端的AJAX请求,它将json对象POST到我的ASP.NET MVC 4服务器,导致在 ValueProvider 中填充 DictionaryValueProvider< object> 。
现在,我事先并不知道所有的字段名称(在客户端有动态字段添加功能),所以我需要在我的自定义ModelBinder中将它们打包到某种字典中(从 DefaultModelBinder 派生) )。
我不能从 controllerContext 表单值或查询字符串中获取值,也不能直接从 DictionaryValueProvider 获取 IValueProvider.GetValue(Key)< /强>
如何在ModelBinder中访问ValueProvider中的所有键呢?
答案 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;