2008-11-07 4 views
7

Я преобразовал свое веб-приложение из предварительного просмотра 3 в бета1, и теперь я пытаюсь использовать новые функции фреймворка. Один из них - ModelBinding.ModelBinding в asp.net mvc Beta1

Для этой конкретной ситуации я создал класс, который (на данный момент) представляет собой только контейнер с множеством свойств простого типа. Если я создаю форму с кучей текстовых полей, я хочу, чтобы фреймворк заполнил экземпляр SearchBag этими полями.

  • С какого места? Это поведение из коробки или я использую SearchBagBinder? Я быстро посмотрел на IModelBinder, но не могу обернуть мою голову вокруг него, а Источник DefaultModelBinder не сделать меня мудрее.
  • Что такое ModelBindingContext?
  • Как получить доступ к полям формы?
  • Что делать, если значения не передаются по по форме, а путем ввода прямого адреса ?
  • Где я могу найти актуальное информация об этом (большинство блогов устарели)? Я думал, что прочитал сообщение от Фила, но я не могу , кажется, не нашел его больше.

Любая помощь приветствуется.

+0

3 голоса, две звезды, нет ответов :( – 2008-11-07 12:09:36

+0

3 голоса, потому что 3 человека думали, что это хороший вопрос, 2 звезды, потому что 2 человека сделали его любимым вопросом и были заинтересованы в отслеживании ответов. – TheCodeJunkie 2008-11-07 21:02:09

ответ

3
  • С какой целью? Это поведение из коробки или я использую SearchBagBinder? Я быстро посмотрел на IModelBinder, но не могу обернуть мою голову вокруг него, а Источник DefaultModelBinder не сделать меня мудрее.

Это из коробки. Вы можете использовать UpdateModel или ModelBinder для достижения того, что вы хотите сделать.

  • Что такое ModelBindingContext?

Эта информация содержит всю необходимую информацию для запроса, связанного с вашей моделью. Подобно ControllerContext и ActionFilterContext, это в основном состояние ModelBinder и содержит всю информацию, необходимую для выполнения того, что вы хотите, если следовать рекомендациям групп ASP.NET MVC для того, что должен делать ModelBinder.

  • Как получить доступ к полям моей формы?
context.HttpContext.Request.Forms["myformfield"]; 

или

foreach (var field in context.HttpContext.Request.Forms.Keys) { 
    var value = context.HttpContext.Request.Forms[field]; 
} 
  • Что делать, если значения не передаются по форме, а путем ввода URL напрямую?

Если вам нужно проверить как форму и QueryString только через петлю обеих коллекций.

foreach (var field in context.HttpContext.Request.Forms.Keys) { 
    var value = context.HttpContext.Request.Forms[field]; 
} 
foreach (var field in context.HttpContext.Request.QueryStrings.Keys) { 
    var value = context.HttpContext.Request.QueryStrings[field]; 
} 

или вы можете перебрать Param, который будет содержать, формы, QueryString, заголовки и т.д.

foreach (var field in context.HttpContext.Request.Params.Keys) { 
    var value = context.HttpContext.Request.Params[field]; 
} 
  • Где найти уточненный информацию об этом * (большинство блогов устарели)? Я думал, что прочитал сообщение от Филла в одно время, но я не могу , кажется, не нашел его больше.

У вас есть это право Фил является лучшим местом для информации ПМ ASP.NET MVC.

Смежные вопросы