2009-11-18 3 views
11

이것은 내가 묻는 또 다른 질문과 관련이 있지만 그 질문에 별도로 질문하지 않는 이유를 설명합니다. 내가보기Url.Action은 Asp.net MVC와 어떻게 작동합니까?

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

에 다음과 같은 것을 배치한다면

는이 표시되어 있습니까?

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

src-attribute의 값은 실제로 UserController GetImage Action의 결과로 바뀌겠습니까?

답변

9

액션을 실행 한 결과가 아니라 URL을 반환하여 액션의 경로를 구성합니다.

결과가 될 것이다

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

예 번호. 사용자 모델에 바이트 배열로 저장된 이미지가 있다고 가정합니다. LINQ를 사용하고 속성이 Binary 인 경우 ToArray() 메서드를 사용하여 바이트 배열로 변환하십시오. 사용자가 로그인하고 GET 요청을 사용해야하는 속성에 유의하십시오.

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

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

}

+0

감사합니다. 이 방법을 사용하여 이미지가 어떻게 표시되어야하는지 알 수 있습니까? 이미지를 표시하기 위해 본 모든 예는이 방법을 사용하며 작동 방식이 이해가되지 않습니다. 나는 이것이 정말로 도움이 될 수 있도록 mvc에 익숙하지 않다. – zSynopsis

+0

사용자 ID를 매개 변수로 취하는 DisplayImage (또는 GetImage, 두 가지 방법이 있지만 하나만 올 수 있음)라는 메서드가 필요합니다. image/jpeg, image/gif 또는 image/png와 같은 이미지 형식에 적절한 MIME 유형이있는 ContentResult를 반환해야합니다. 당신의 액션은 데이터베이스에서 이미지를 스트림으로 가져 와서 mime 형식을 설정하여이 스트림에서 ContentResult를 구성합니다. – tvanfosson

+0

감사합니다. tvan. 바이트 배열에 저장된 이미지에 대해 ContentResult를 생성하는 방법에 대한 예제가 있습니까? – zSynopsis