2013-06-16 1 views
0

@ Url.action을 통해 작업을 호출하는 내보기의 이미지 태그에 이미지를 반환하는 하위 컨트롤러가 내 컨트롤러에 있습니다. 내 문제는 내가 ChildActionOnly 특성을 이미지에서 렌더링 작업을 제거 할 때하지만 그것을 다시 추가 할 때 않습니다. 직접 호출 할 수 없도록이 속성을 전달하는 조치가 필요합니다. 아래는 제 코드입니다.이 ChildAction 또는 Razor보기에 누락 된 항목

[ChildActionOnly] 
public ActionResult GetImage(int id) 
     { 
      var photo = _Db.Photozs.Single(p => p.PhotozId == id); 
      string path = Server.MapPath("~/Photo"+photo.Url); 
      var fs = new FileStream(path, FileMode.Open); 
      return new FileStreamResult(fs, photo.ContentType); 
     } 

이 내보기

+0

이것은 '보기'또는 '부분보기'입니까? 제 생각에'ChildActionOnly'는'View'가 아닌'Partial View'에서만 사용해야합니다. – wuhcwdc

답변

1

귀하의 방법은 올바른 당신의 도움의 기대에

@model IEnumerable<okay.models.photoz> 

@{ 
    ViewBag.Title = "Index"; 
} 
<<div class="container-fluid"> 

    @foreach (var item in Model) 
    { 
     <div class="pull-left span3"> 
      <img class="img-polaroid" src="@Url.Action("GetImage",new{id=item.PhotozId})"/> 
      <div class="text-center">@item.Caption</div> 
     </div> 
    } 
</div> 

고마워하지만 당신은 그것을 제거 잘못된 장소에서 [ChildAction]을 사용하고 있습니다.

[ChildActionOnly] 속성은 작업 메소드가 하위 작업으로 만 호출되어야 함을 나타내는 데 사용되는 속성을 나타냅니다.

메소드를 하위 작업으로 실행하지 않으므로 해당 속성을 넣은 후에 실행되지 않습니다. 또한 하위 작업 메서드는 전체보기를 렌더링하는 대신보기의 일부에 대해 인라인 HTML 태그를 렌더링합니다.

  • ChildActionOnlyAttribute으로 표시되는 모든 방법

    Html.Action() 또는 Html.RenderAction() HTML 도우미 확장 메서드로 호출 할 수 있습니다.
0

내 문제는 내가 에서 이미지 렌더링 작업을 ChildActionOnly 속성을 제거하지만 난 다시 추가하면 그렇지 않습니다 때

만 사용 당신이 행동에 [ChildActionOnly] 속성 Html.Action 또는 Html.RenderAction 도우미로 렌더링합니다. 이러한 작업은 직접 HTTP 요청을 사용하여 클라이언트에서 직접 액세스 할 수 없습니다. <img> 태그의 src 속성이 서버 쪽 끝점을 가리킬 때 브라우저는이 끝점으로 HTTP 요청을 보냅니다. 해당 끝 점이 [ChildActionOnly]으로 꾸며져 있으면 클라이언트에 렌더링 할 수 없습니다.

HTTP 요청을 사용하여 클라이언트에서 직접이 작업에 액세스하려면이 작업을 컨트롤러 작업에서 제거해야합니다.

+0

답변을 주셔서 감사합니다. 어떻게 내 코드를 다시 고려할 것을 제안합니까? 내가보기에 이미지를 보내려고. 내가 어떻게 이걸 얻을 수 있다고 생각하니? 물론 사용자가 직접 이미지를 직접 호출하고 가져올 수 있습니다. –

+1

내 대답을 이해하지 못했습니까? '' 태그의 타겟으로 사용하려는 경우 컨트롤러 액션에서'[ChildActionOnly]'속성을 제거하십시오. 아이의 행동이 어떻게 작동하는지 이해하지 못했을 경우 다음 블로그 게시물에 빨간색으로 초대합니다. http://haacked.com/archive/2009/11/17/aspnetmvc2-render-action.aspx –

+0

나는 당신의 대답을 아주 잘 이해했습니다. 다 좋아. 내가 알고 싶은 것은 뷰를 렌더링하는 것과는 다른 액션을 사용하지 않고 이미지를 뷰로 가져올 수있는 다른 방법입니다. 다시 한 번 감사드립니다 –

관련 문제