2009-11-18 17 views
11

Jest to nieco związane z innym pytaniem, które zadałem, ale domyślam się, dlaczego nie poprosić o to osobno.Jak działa Url.Action Asp.net MVC?

Gdybym miał umieścić coś jak następuje w widoku

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

Ma to wyświetlenie tego?

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

Albo wartość atrybutu src-faktycznie zostać zastąpione wynikami UserController GetImage działania?

Odpowiedz

9

Skonstruuje ścieżkę do działania, zwracając adres URL, a nie wyniki wykonania działania.

Wyniki będą:

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

przykład kod. zakłada, że ​​twój model użytkownika ma obraz zapisany w tablicy bajtów. Jeśli używasz LINQ, a właściwość to Binary, użyj metody ToArray(), aby przekonwertować ją na tablicę bajtów. Zwróć uwagę na atrybuty, które będą wymagały zalogowania użytkownika i użycia żądania GET.

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

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

}

+0

Dzięki. Czy zdarzy ci się wiedzieć, jak obrazy powinny być wyświetlane za pomocą tej metody? Każdy przykład widziałem do wyświetlania obrazów używa tej metody i nie rozumiem, jak to działa (ponieważ nie działa dla mnie). Jestem nowy dla mvc, więc to naprawdę pomogłoby. – zSynopsis

+0

Potrzebowałbyś metody o nazwie DisplayImage (lub GetImage, masz ją w obie strony, ale tylko jedna może być poprawna), która przyjmuje identyfikator użytkownika jako parametr. Musiałby zwrócić właściwość ContentResult z odpowiednim typem MIME dla formatu obrazu, np. Image/jpeg, image/gif lub image/png. Twoje działanie pobierze obraz z bazy danych do strumienia i skonstruuje ContentResult z tego strumienia, ustawiając typ MIME. – tvanfosson

+0

Dzięki tvan. Czy są jakieś przykłady na temat sposobu konstruowania obiektu ContentResult dla obrazu przechowywanego w tablicy bajtów? – zSynopsis

Powiązane problemy