我是新的使用自定義ModelBinders,我一直在環顧四周,找不到任何與此特定案例相關的帖子。MVC 3.0 ModelBinder bindingContext.ValueProvider.GetValue(key)在集合中綁定時返回null
我有這樣一個實體:
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");
我會非常感謝你能不能給我任何與此指導。
我建議您訪問[此鏈接] [1]。我認爲這對你的問題很有用。 [1]:http://stackoverflow.com/a/25902872/1817640 – Jahan 2014-10-01 23:47:18