Pregunta

Convertí mi aplicación web de la vista previa 3 a beta1 y ahora estoy tratando de usar las nuevas funciones del marco. Uno de ellos es ModelBinding.

Para esta situación particular, creé una clase que es (por ahora) solo un contenedor de un conjunto de propiedades de tipo simple. Si creo un formulario con un montón de cuadros de texto, quiero que el marco llene una instancia de SearchBag con estos campos.

  • ¿Por dónde empiezo? Es este comportamiento fuera de la caja o implemento un SearchBagBinder? Eché un vistazo rápido en IModelBinder pero no puedo envolver mi cabeza alrededor de él y el La fuente DefaultModelBinder no hazme más sabio.
  • ¿Qué es este ModelBindingContext?
  • ¿Cómo accedo a mis campos de formulario?
  • ¿Qué pasa si los valores no se pasan? por un formulario, sino introduciendo un URL directamente?
  • ¿Dónde me encuentro actualizado? información sobre esto (la mayoría de los blogs son anticuado)? Pensé que leí una publicación por Phil en un momento, pero no puedo parece que ya no lo encuentra.

Cualquier ayuda es apreciada.

¿Fue útil?

Solución

  
      
  • ¿Por dónde empiezo? Es este comportamiento   fuera de la caja o implemento un   SearchBagBinder? Eché un vistazo rápido   en IModelBinder pero no puedo   envolver mi cabeza alrededor de él y el   La fuente DefaultModelBinder no   hazme más sabio.
  •   

Está fuera de la caja. Puede usar UpdateModel o ModelBinder para lograr lo que está buscando hacer.

  
      
  • ¿Qué es este ModelBindingContext?
  •   

Contiene toda la información necesaria para que la solicitud esté vinculada a su Modelo. Similar a ControllerContext y ActionFilterContext, es básicamente el estado de ModelBinder y contiene toda la información necesaria para hacer lo que desea, si sigue las recomendaciones de los equipos ASP.NET MVC para lo que se supone que debe hacer ModelBinder.

  
      
  • ¿Cómo accedo a mis campos de formulario?
  •   
context.HttpContext.Request.Forms["myformfield"];

o

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
  
      
  • ¿Qué pasa si los valores no se pasan?   por un formulario, sino introduciendo un   URL directamente?
  •   

Si necesita verificar tanto el Formulario como el QueryString, simplemente recorra ambas colecciones.

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

o puede recorrer Param que contendrá, Form, QueryString, Headers, etc.

foreach (var field in context.HttpContext.Request.Params.Keys) {
    var value = context.HttpContext.Request.Params[field];
}
  
      
  • ¿Dónde me encuentro actualizado?   información sobre esto * (la mayoría de los blogs son   anticuado)? Pensé que leí una publicación   por Phill en un momento, pero no puedo   parece que ya no lo encuentra.
  •   

Tienes razón Phil es el mejor lugar para obtener información como el PM de ASP.NET MVC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top