Я новичок в использовании пользовательских ModelBinder, я искал и не смог найти ни одного поста, связанного с этим конкретным случаем.
У меня есть такая сущность:
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 (ключ), он возвращает значение true, но когда я получаю GetValue (ключ), он возвращаетноль.Если я проверю, что содержит ValueProvider, я вижу, что есть несколько элементов с их ключом, начинающимся в «DynamicDataItem [0]».Как я могу получить информацию из всех полей для элемента, который в настоящее время привязывается («DynamicDataItem [0]»)?Должен ли я получить их всех по одному?Вот так:
var result1= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Id");
var result2= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Name");
Я буду очень признателен за любые советы, которые вы можете дать мне с этим.