ASP.NET MVC 2 - Устанавливание значений на IValueProvider

Я пытаюсь обновить свой проект MVC 1 до MVC 2 RC. У нас в настоящее время есть пользовательский modelbinder, который добавляет объекты к ValueProvider (это работало, когда это был словарь). Мы затем выдали это к значению по умолчанию modelbinder. Однако IValueProvider не имеет добавить метода, таким образом, этот алгоритм больше не работает. Кто-либо знает о пути к добавленным стоимостям к ValueProvider в MVC 2?

foreach(string valKey in controllerContext.RequestContext.HttpContext.Request.Form.AllKeys.Where(x => x.StartsWith(valuesToChangePrefix)))
{
    string valName = valKey.Substring(valuesToChangePrefix.Length);

    string myVal = ManipulateValue(bindingContext.ValueProvider.GetValue(valKey).AttemptedValue);

    // This is where I need to add to my value Provider (As you can see I used to just assign a ValueProviderResult
    //bindingContext.ValueProvider = new ValueProviderResult(myVal.Split(','), myVal, bindingContext.ValueProvider.GetValue(valKey).Culture);
}
9
задан abatishchev 20 August 2010 в 08:09
поделиться

3 ответа

Проблема в том, что к тому времени, когда вы попадаете в ModelBinder, ваш ValueProvider уже был установлен. Ранее вы можете добавить значения в ваш ValueProvider в этот момент.

Для того, чтобы обеспечить пользовательское значениеProvider, вам необходимо переопределить ControllightingInvoker, который является окончательным решением. К сожалению, контроллерныйInvoker создается объектом контроллера вместо того, чтобы вводиться. Следовательно, вам также необходимо переопределить контроллер, чтобы позвонить своему собственному контроллеру.

2
ответ дан 5 December 2019 в 02:07
поделиться

Я, вероятно, не ошибаюсь, но какой этот префикс вы используете? Это связано с ребенком соотношения вашей модели?

Если нет, почему не вытесняется из по умолчанию Modelbinder и переопределить метод BindModel () ? Таким образом, вы можете позвонить base.bindmodel () и манипулируйте значениями после этого, однако вы не можете использовать проверку модели, затем (убедитесь, что вы прочитали http://bradwilson.typepad.com/ Blog / 2010/01 / вход-валидация-VS-модель-валидация-in-aspnet-mvc.html , потому что будет существенное изменение в выпуске против RC).

Чистый подход, от того, что я могу догадаться, вы пытаетесь сделать, это использовать ViewModel в этом случае. Поскольку манипуляция, вероятно, нетривиальна, вы можете отделить входную и модульную проверку друг от друга.

Не уверен, что это также поможет ...

0
ответ дан 5 December 2019 в 02:07
поделиться

Разве вы не можете использовать один из полученных типов IvalueProvider ? (Или даже создайте свои собственные, но в рамках в рамках в рамках)

)

)

ValueProvidricsionary . ValueProvidercleclolection , , Форма (и еще пару) Все они реализуют IvalueProvider .

Я не уверен, поможет ли это. Я не совсем уверен в том, что вы пытаетесь сделать. Мне не нужно было иметь дело с смешиванием с парами поста.

0
ответ дан 5 December 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: