2009-11-18 14 views
11

Questo è in qualche modo correlato a un'altra domanda che ho chiesto, ma immagino perché non chiederlo separatamente.Come funziona Url.Action Asp.net MVC?

Se dovessi mettere qualcosa di simile a quanto segue in una vista

<td><img src='<%= Url.Action("DisplayImage" , "User" , new { id = item.id}) %>' alt="" /></td> 

E 'supposto per visualizzare questo?

<td> 
    <img src='/User.mvc/DisplayImage?id=U00915441' alt="" /> 
</td> 

o se il valore del src attributo in realtà sostituiti con i risultati del UserController GetImage azione?

risposta

9

Costruirà il percorso dell'azione, restituendo un url, non i risultati dell'esecuzione dell'azione.

I risultati saranno: codice

<td> 
    <img src='/User.mvc/DisplayImage?id=U00915441' alt="" /> 
</td> 

Esempio. presume che il modello dell'utente abbia l'immagine memorizzata in un array di byte. Se si utilizza LINQ e la proprietà è Binary, utilizzare il metodo ToArray() per convertirlo in un array di byte. Prendi nota degli attributi che richiedono che l'utente effettui l'accesso e utilizzi una richiesta GET.

[Authorize] 
[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult DisplayImage(string id) 
{ 
    var user = ...get user from database... 

    return File(user.Image, "image/jpeg"); 
} 

}

+0

Grazie. Vorresti sapere come dovrebbero essere visualizzate le immagini usando questo metodo? Ogni esempio che ho visto per la visualizzazione delle immagini utilizza questo metodo e non capisco come potrebbe funzionare (dal momento che non funziona per me). Sono nuovo di mvc, quindi questo sarebbe davvero di aiuto. – zSynopsis

+0

Avresti bisogno di un metodo chiamato DisplayImage (o GetImage, hai entrambi i modi ma solo uno potrebbe essere corretto) che prende l'id dell'utente come parametro. Dovrebbe restituire un ContentResult con il tipo mime appropriato per il formato dell'immagine, ad esempio image/jpeg, image/gif o image/png. L'azione recupera l'immagine dal database in un flusso e costruisce ContentResult da questo flusso, impostando il tipo mime. – tvanfosson

+0

Grazie tvan. Ci sono degli esempi su come fare per costruire un ContentResult per un'immagine memorizzata in un array di byte? – zSynopsis

Problemi correlati