刷新图像Src

时间:2009-02-02 21:59:00

标签: asp.net javascript jquery asp.net-mvc

k ... Strager能够帮助我一点。但是,它仍然无法正常工作。需要知道MVC和jQuery的人......

我有一个页面,其中有一个图像,当单击时会启动一个对话框,可以上传文件。对话框关闭后,图像应该刷新上传/存储在数据库中的内容......

第一次一切都很棒。但是,如果我尝试上传第二张图片;第一张图像仍然显示。它似乎也没有第二次调用我的控制器方法...下面是我的代码...

我还删除了该页面正在被缓存。同样,第二次没有调用控制器方法...

控制器

[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);
}

查看

<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>

5 个答案:

答案 0 :(得分:1)

什么是#image应该找不到('img')?或者给IMG一个“图像”ID。

答案 1 :(得分:1)

我不知道ASP,但这一行:

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

似乎在最初查看页面时进行解析,而不是在上传新图像时进行解析。

要获取新图像的URL,请在响应中将该数据发送到POST请求。这应该很容易,特别是如果您使用JSON或原始文本进行传输。

对于jQuery方面:

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

如果有人知道如何在ASP方面这样做,请编辑这篇文章或制作另一篇文章!

答案 2 :(得分: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>

答案 3 :(得分:0)

您的<img>没有ID image,因此.find('#image')没有返回任何元素。

答案 4 :(得分:0)

我不知道ASP,但是......你检查过HTTP标头了吗?可能是浏览器正在缓存图像URL。尝试使用LiveHTTPHeaders for Firefox,看看实际上是什么电话进入服务器。 Firebug在这里也可能有一些帮助(它跟踪浏览器中的缓存命中与网络调用)。