2009-02-02 5 views
3

k ... Strager가 나를 조금 도울 수있었습니다. 그러나 여전히 제대로 작동하지 않습니다. MVC와 jQuery를 모두 아는 사람이 필요합니다 ...새로 고침 A 이미지 Src

클릭하면 이미지를 업로드 할 수있는 대화 상자가 열리는 이미지가있는 페이지가 있습니다. 대화 상자가 닫히면 이미지는 데이터베이스에 업로드/저장된 내용으로 새로 고쳐지기 시작합니다. ...

모든 작품이 처음 사용되었습니다. 그러나 두 번째 이미지를 업로드하려고하면; 첫 번째 이미지가 계속 표시됩니다. 또한 내 컨트롤러 메서드가 두 번째 호출되고있는 것 같지 않습니다 ... 내 코드는 아래입니다 ...

또한 페이지가 캐시되고 있음을 제거했습니다. 또, 컨트롤러 방법은

컨트롤러

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult GetImage(Guid parentId) 
{ 
    var la = Helper.Service.GetAttachmentByEntity(parentId, MembershipProvider.SecurityTicket).ToList(); 
    la.OrderByDescending(x => x.CreatedDate); 

    return File(la[0].Data, la[0].ContentType); 
} 

보기 ... 약 2 시간이라고하지 않을

<script type="text/javascript"> 
    $(function() { 
     var iphcObject = $('#<%=imagePlaceHolderControl.ClientID %>'); 

     iphcObject.children().find('#imageUploadDialog').bind('onClose', function() { 
      iphcObject.children().find('#image').attr('src', '<%=Url.Action("GetImage", "Image", new { parentId = Model.ParentId }) %>'); 
     }); 
    }); 
</script> 

<asp:Panel ID="imagePlaceHolderControl" runat="server"> 
    <div style="border: solid 1px; width: <%=Model.Width%>; height: <%=Model.Height%>; text-align: center; vertical-align: middle;"> 
     <a href="#" onclick="$('#imageUploadDialog').dialog('open');" title="Add a picture..."> 
     <img id="image" src="<%=Url.Content("~/content/images/icon_individual_blank.gif") %>" /></a> 
     <%Html.RenderDialog("imageUploadDialog", "Upload image...", "ImagePlaceHolder_Upload", "Image", Model, 235, 335); %>   
    </div> 
</asp:Panel> 
+0

혹시 당신은, 당신의 라이브 웹 페이지에 링크를 게시 할 수있는 상호 작용하는 데 도움이 될 것이다. 캐싱 문제처럼 보이지만 데이터베이스 처리 방법을 잘 모르는 경우 –

+0

몇 가지 추가 정보를 게시했습니다. 그것은 확실히 캐싱 문제가 아니에요 ... 생각 ...? – Jason

+0

그렇다면 캐싱이 문제가되지 않는다면 HTML이 렌더링되는 페이지를 게시 할 수 있습니까? 첫 번째 디스플레이에는 1 개의 img 업로드와 2 번째의 img 업로드가 표시됩니다. 이것은 비교적 간단해야하지만, 우리는 진단의 일부가 누락 된 것 같아요. –

답변

1

는 #image이 발견되지 않아야 무엇입니까 ('img')? 또는 IMG에 '이미지'ID를 부여하십시오.

0

<img>에는 image이라는 ID가 없습니다. 따라서 .find('#image')은 요소를 반환하지 않습니다.

1

내가 ASP를 알고 있지만,이 행하지 않습니다

iphcObject.find('#image').attr('src', '<%=Url.Action("GetNewImage", "Image", new { parentId = Model.ParentId }) %>'); 

이 페이지를 처음 볼 때 구문 분석 할 수 나타난다, 새로운 이미지를 업로드하지 않을 때.

새 이미지의 URL을 가져 오려면 해당 데이터를 POST 요청에 대한 응답으로 보냅니다. 이는 특히 JSON 또는 원시 텍스트를 전송에 사용하는 경우 쉽게 수행해야합니다. JQuery와 측

: 사람이 ASP 측에서 그것을 할 방법을 알고있는 경우

$.post('<%=Url.Action("GetImage", "Image", new { parentId = Model.ParentId }) %>', {}, function(data) 
{ 
    iphcObject.find('#image').attr('src', data.newImageUrl); 
}, 'json'); 

,이 게시물을 편집하거나 다른 해주세요!

+0

당신이 말한 것에 대한 예를 들어 줄 수 있겠습니까 ... – Jason

+0

나는 이것과 비슷한 것을 시도했습니다 ... iphcObject.find ('image') .attr ('src', $. post ('<% = Url.Action ("GetImage", "Image", 새 {parentId = Model.ParentId}) %>'))); 하지만 그건 작동하지 않았다 ... – Jason

+0

@Jason, 내 업데이트를 참조하십시오. – strager

0

나는 ASP를 모르지만 ... HTTP 헤더를 확인 했습니까? 이미지 URL이 브라우저에 의해 캐시되고있을 수 있습니다. Firefox 용 LiveHTTPHeaders를 사용해보고 실제로 어떤 호출로 서버에 연결되는지보십시오. 방화범이 끌려도 도움이 될 수 있습니다 (브라우저 캐시와 네트워크 호출에서 캐시 히트를 추적합니다).

+0

캐시가 아닙니다. 다음 위치에 있습니다. Response.Cache.SetExpires (DateTime.UtcNow.AddMinutes (-1)); Response.Cache.SetCacheability (HttpCacheability.NoCache); Response.Cache.SetNoStore(); 이렇게하면 페이지가 캐싱되지 않습니다 ... – Jason

+0

또한 LiveHttpHeaders를 사용하여 캐싱 측면에서 어떤 문제도 보지 못했습니다. 이 문제는 실제로 아무 것도 일어나지 않고 업로드 한 후 대화 상자를 두 번 올리거나 닫을 때 발생합니다. 요청이 없습니다 ... – Jason

+0

내 모델 메서드에 중단 점을 설정하면 절대 실행되지 않습니다. 또한 LiveHttpHeaders에서 두 번째 업로드시 아무 것도 발생하지 않습니다. – Jason

1

당신은 클라이언트 측에서 새로 고침을 강제로 임의의 수에 압정 수 있습니다

<img id="img" src="@Url.Action("GetImage")" alt="random" /> 
    <script type="text/javascript"> 

    var src = $("#img").attr("src"); 
    var count = 0; 

    setInterval(function() { 
     $("#img").attr("src", src + "?" + count); 
     count++; 
    }, 3000); 

    </script> 
관련 문제