У меня есть пользовательское связующее для модели, которое берет список, разделенный запятыми, и очищает все пустые значения, а затем передает его в связующее для модели по умолчанию. Это работало в ASP.NET MVC Preview 2, но при обновлении до RC2 приведенное ниже не будет компилироваться, поскольку интерфейс ValueProvider имеет только метод GetValue (), а не метод доступа []. Возможно ли то, что я делаю ниже, через какой-то другой механизм в контексте привязки? Я бы предпочел не создавать полнофункциональный переплет модели для такой простой ситуации. Основная цель - когда значения привязаны к списку , все пустые значения пропускаются.
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);
}
}