Domanda

CIAO,

Sono sicuro che mi sto perdendo qualcosa di molto evidente qui, quindi vi prego di perdonarmi.

  • Sto utilizzando MVC 2 Beta e ho un modello che ha diverse proprietà, stringhe, interi, ecc.la solita roba.
  • Essa ha anche una matrice di byte che contiene un'immagine.
  • Ho una modifica metodo di azione sul mio controller decorato con un [HTTPGet] attributo.
  • Il metodo passa il modello per la vista che è una forma che ha il solito caselle di testo che si legano alle varie proprietà di stringa e un elemento img, che è associata la matrice di byte/immagine.

Tutto questo funziona come dovrebbe e vedo tutti i dati, comprese le immagini.Questa è tutta roba abbastanza standard.

Ma quando l'utente invia il form per la mia [HTTPPost] versione del metodo di azione che accetta lo stesso modello come parametro l'immagine di proprietà è null.cioèl'immagine non viene visualizzata la proprietà da parte dell'associazione del modello.

Nel normale corso degli eventi vorremmo fare un po di convalida e di superare il modello di visualizzazione per il rendering in modo che l'utente può vedere se le modifiche sono state un successo o meno.Ma solo di passaggio il modello "as is" - il punto di vista non rende l'immagine di nuovo, perché non è più nel modello.

So che posso andare e ottenere di nuovo l'immagine (dal database o dove mai) e inserire nuovamente il modello prima di passare alla vista, ma è che il diritto stratergy o mi sono perso qualcosa?

Saluti, Simon

È stato utile?

Soluzione

Come si fa a rendere l'immagine contenuta come dati binari nel modello?Non si utilizza il classico webforms controlli (cosa non sarebbe recomded mvc una terminologia)?Comunque, se l'immagine viene visualizzata solo la vista non viene inviato quando l'utente invia il form, perché solo i campi di input (caselle di controllo, i campi di testo, hiddens) sono sottoposte al server.elemento dell'immagine non è.Ricordo che in MVC è semplice HTML facendo tutto il lavoro di registrazione dei dati del server, non c'è viewstate né automatica di postback che permarrà lo stato dei controlli.Hai due soluzioni:

  1. La codifica binaria dei dati in qualche campo nascosto, quindi sarebbe un inviato di nuovo.
  2. (meglio) non inviare i dati di immagine e indietro tra il client e il server, ma di rilevare se l'utente ha fornito una nuova immagine (che mi aspetto è trovato bene usare il file di input per questo) e se l'utente è uscito il file di input vuoto quindi aggiornare il modello con l'immagine già memorizzati nel database per visualizzare di nuovo.Altrimenti aggiorna l'immagine nel database.

Comunque, sono curioso di sapere come si fa a visualizzare l'immagine dal binario di dati nel modello.Penso che sarebbe più semplice creare qualche azione di controller, che restituisce i dati binari in modo che si poteva utilizzare l'URL di tale azione nell'attributo src del tag img, o memorizzare le immagini come file e utilizzare il loro URL invece di dati binari.

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