Я новичок в использовании пользовательских 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");
Я буду очень признателен за любое руководство, которое вы можете мне дать в этом отношении.