【问题标题】:Getting Keys from ValueProvider in ModelBinder从 ModelBinder 中的 ValueProvider 获取密钥
【发布时间】:2014-12-18 06:27:57
【问题描述】:

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

如果不知道 IValueProvider.GetValue(Key)。

那么我如何在我的 ModelBinder 中访问 ValueProvider 的所有键?

【问题讨论】:

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


    【解决方案1】:

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

    例如

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

    【讨论】:

    • 谢谢,但我实际上无法通过 controllerContext 获取所有密钥。由于某种原因,controllerContext.HttpContext.Request.Form.AllKey 中没有提供所需的键
    • 这是不正确的。它不考虑此处未找到的路由值。
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 2018-02-08
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2020-06-09
    相关资源
    最近更新 更多