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

c# – MVC 3.0 ModelBinder bindingContext.ValueProvider.GetVa

发布时间:2020-12-15 06:56:40 所属栏目:百科 来源:网络整理
导读:我是新的使用自定义的ModelBinders,我一直在寻找,我找不到与这个具体情况相关的任何帖子. 我有一个实体: public class DynamicData { public IListDynamicDataItem DynamicDataItems{get;set;} } 在视图中我绑定如下: @Html.EditorFor(model = model.Dynam
我是新的使用自定义的ModelBinders,我一直在寻找,我找不到与这个具体情况相关的任何帖子.

我有一个实体:

public class DynamicData
    {
       public IList<DynamicDataItem> DynamicDataItems{get;set;}
    }

在视图中我绑定如下:

@Html.EditorFor(model => model.DynamicDataItems);

我在DynamicDataItems类中有特殊的信息,我想以特定的方式检索,所以我创建了自己的模型绑定器.

public class DynamicDataItemBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
        {
            var key = bindingContext.ModelName;
            var valueProviderResult = bindingContext.ValueProvider
                .GetValue(key);

            if (valueProviderResult == null ||
                string.IsNullOrEmpty(valueProviderResult
                    .AttemptedValue))
            {
                return null;
            }

            //Here retrieve my own Information

            return DynamicDataItem;
        }
    }

bindingContext.ModelName包含“DynamicDataItem [0]”.

如果我做bindingContext.ValueProvider.ContainsPrefix(key),它返回true,但是当我执行GetValue(key)时,它返回null.
如果我检查ValueProvider包含什么,我看到有几个项目,他们的键从“DynamicDataItem [0]”开始.
我如何从目前被绑定的项目(“DynamicDataItem [0]”)的所有字段中检索信息?
我应该逐一检索它们吗?
喜欢这个:

var result1= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Id");
 var result2= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Name");

我将非常感谢您能给予我的任何指导.

解决方法

这个问题似乎是你试图将类型为DynamicDataItem的对象绑定到一个输入.由于DynamicDataItem不是字符串或其他一些基本类型,所以没有一个简单的方式来解析您的输入,并返回null.

假设类DynamicDataItem具有自己的属性,你想要做的是为DynamicDataItem的每个属性提供编辑器.如果您想要做的只是从视图传递一个绑定的子对象集合的模型,则甚至不需要自定义模型绑定.我想你想要的是你看来更像这样的东西

<input type="text" name="DynamicDataItem[0].SomeTextField" />
<input type="text" name="DynamicDataItem[0].SomeOtherTextField" />

查看Phil Haack和Scott Hanselman的话题

Here
和Here

我希望有所帮助

(编辑:李大同)

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

    推荐文章
      热点阅读