У меня есть настраиваемое связующее устройство, которое перебирает список, разделенный запятыми, и очищает любые пустые значения, а затем передает его по умолчанию в связующее , Это работало в ASP.NET MVC Preview 2, но когда я обновился до RC2, ниже не будет компилироваться, потому что интерфейс ValueProvider имеет только метод GetValue(), no []. Является ли то, что я делаю ниже, через какой-либо другой механизм в контексте привязки? Я бы предпочел не создавать полномасштабное связующее устройство для такой простой ситуации. Основная цель - когда значения привязаны к списку <SomeEnum>, любые пустые значения пропускаются.Как обновить пользовательский ModelBinder для работы с измененным интерфейсом ModelBindingContext.ValueProvider в ASP.NET MVC RC2
public class EnumListModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var result = bindingContext.ValueProvider[bindingContext.ModelName];
string[] rawValues = (string[])result.RawValue;
var newValues = new List<string>();
foreach (string value in rawValues)
{
if (!String.IsNullOrEmpty(value))
{
newValues.Add(value);
}
}
string newValuesAttempted = String.Join(",", newValues.ToArray());
// overwrite the ValueProviderResult with the cleaned up csv list
// this is the part I'm not sure how to implement using the interface
bindingContext.ValueProvider[bindingContext.ModelName] =
new ValueProviderResult(newValues.ToArray(), newValuesAttempted, result.Culture);
return System.Web.Mvc.ModelBinders.Binders.DefaultBinder.BindModel(controllerContext, bindingContext);
}
}
Это не та часть, что изменение интерфейса не позволяет мне делать. Это от 2-й до последней строки, где я перезаписываю результат в коллекции ValueProvider. – JeremyWeir
Что касается литых, я использую только это связующее устройство для свойств, которые, как я знаю, будут соответствовать данным формы. – JeremyWeir
Вам нужно будет обновить * конкретный источник * (например, controllerContext.HttpContext.Request.QueryString [something]. –