Pergunta

Eu converti minha aplicação web de pré-visualização 3 a beta1 e agora estou tentando colocar as novas funções do quadro para uso. Um deles é ModelBinding.

Para esta situação particular, eu criei uma classe que é (por enquanto) apenas um contêiner de um monte de propriedades do tipo simples. Se eu criar um formulário com um monte de caixas de texto, eu quero o quadro para preencher uma instância SearchBag com estes campos.

  • Por onde eu começo? É este comportamento fora da caixa ou eu implementar um SearchBagBinder? Eu tinha um olhar rápido no IModelBinder mas não pode bastante envolver minha cabeça em torno dele e da fonte DefaultModelBinder não me faz o mais sábio.
  • O que é isso ModelBindingContext?
  • Como faço para acessar meus campos do formulário?
  • E se os valores não são repassados por uma forma, mas sim por um entrando URL diretamente?
  • Onde posso encontrar up-to-date informações sobre este (a maioria dos blogs são desatualizado)? Eu pensei que eu li um post por Phil de uma só vez, mas não posso parecem encontrá-lo não mais.

Qualquer ajuda é apreciada.

Foi útil?

Solução

  • Por onde eu começo? É este comportamento fora da caixa ou eu implementar um SearchBagBinder? Eu tinha um olhar rápido no IModelBinder mas não pode bastante envolver minha cabeça em torno dele e da fonte DefaultModelBinder não me faz o mais sábio.

É fora da caixa. Você pode usar UpdateModel ou ModelBinder para conseguir o que você está procurando fazer.

  • O que é isso ModelBindingContext?

Este contém todas as informações necessárias para a solicitação para ser ligado a seu modelo. Semelhante ao ControllerContext e ActionFilterContext, é, basicamente, o estado do ModelBinder e contém todas as informações necessárias para fazer o que quiser, se você seguir as ASP.NET MVC equipes recomendações para o que o ModelBinder é suposto fazer.

  • Como faço para acessar meus campos do formulário?
context.HttpContext.Request.Forms["myformfield"];

ou

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
  • E se os valores não são repassados por uma forma, mas sim por um entrando URL diretamente?

Se você precisa verificar tanto a forma eo QueryString apenas loop através de ambas as coleções.

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];
}

ou você pode percorrer Param que conterá, Form, QueryString, cabeçalhos, etc.

foreach (var field in context.HttpContext.Request.Params.Keys) {
    var value = context.HttpContext.Request.Params[field];
}
  • Onde posso encontrar up-to-date informações sobre este * (a maioria dos blogs são desatualizado)? Eu pensei que eu li um post por Phill ao mesmo tempo, mas não posso parecem encontrá-lo não mais.

Você tem direito Phil é o melhor lugar para obter informações como o PM do ASP.NET MVC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top