Domanda

Ho convertito la mia applicazione Web dall'anteprima 3 a beta1 e ora sto cercando di utilizzare le nuove funzioni del framework. Uno di questi è ModelBinding.

Per questa particolare situazione ho creato una classe che è (per ora) solo un contenitore di un gruppo di proprietà di tipo semplice. Se creo un modulo con un sacco di caselle di testo, voglio che il framework riempia un'istanza di SearchBag con questi campi.

  • Da dove comincio? È questo comportamento out of the box o devo implementare a SearchBagBinder? Ho dato una rapida occhiata su IModelBinder ma non riesco proprio avvolgere la testa attorno ad esso e il La fonte DefaultModelBinder no rendimi più saggio.
  • Che cos'è questo ModelBindingContext?
  • Come posso accedere ai miei campi modulo?
  • Cosa succede se i valori non vengono trasmessi da un modulo ma piuttosto inserendo un URL direttamente?
  • Dove posso trovarmi aggiornato informazioni su questo (la maggior parte dei blog lo sono obsoleto)? Pensavo di aver letto un post di Phil una volta, ma non posso sembra non trovarlo più.

Qualsiasi aiuto è apprezzato.

È stato utile?

Soluzione

  
      
  • Da dove comincio? È questo comportamento   out of the box o devo implementare a   SearchBagBinder? Ho dato una rapida occhiata   su IModelBinder ma non riesco proprio   avvolgere la testa attorno ad esso e il   La fonte DefaultModelBinder no   rendimi più saggio.
  •   

È fuori dalla scatola. Puoi utilizzare UpdateModel o ModelBinder per ottenere ciò che stai cercando di fare.

  
      
  • Che cos'è questo ModelBindingContext?
  •   

Questo contiene tutte le informazioni necessarie per associare la richiesta al tuo Modello. Simile a ControllerContext e ActionFilterContext, è fondamentalmente lo stato di ModelBinder e contiene tutte le informazioni necessarie per fare ciò che si desidera, se si seguono le raccomandazioni dei team ASP.NET MVC per ciò che si suppone che faccia ModelBinder.

  
      
  • Come posso accedere ai miei campi modulo?
  •   
context.HttpContext.Request.Forms["myformfield"];

o

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
  
      
  • Cosa succede se i valori non vengono trasmessi   da un modulo ma piuttosto inserendo un   URL direttamente?
  •   

Se è necessario controllare sia il modulo sia il QueryString, scorrere semplicemente entrambe le raccolte.

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

oppure puoi scorrere ciclicamente Param che conterrà, Form, QueryString, Headers, ecc.

foreach (var field in context.HttpContext.Request.Params.Keys) {
    var value = context.HttpContext.Request.Params[field];
}
  
      
  • Dove posso trovarmi aggiornato   informazioni su questo * (la maggior parte dei blog lo sono   obsoleto)? Pensavo di aver letto un post   di Phill contemporaneamente, ma non posso   sembra non trovarlo più.
  •   

Hai ragione Phil è il posto migliore per le informazioni come PM di ASP.NET MVC.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top