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>
答案 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在这里也可能有一些帮助(它跟踪浏览器中的缓存命中与网络调用)。