2011-01-07 39 views
0

ASP.NET MVC和jQuery ThickBox。 我在ThickBox中显示一些内容。它包括文件上传表单ThickBox - 内部更新,无需重定向

视图多media.apsx

<form action="/upload/multi-media" method="post" enctype="multipart/form-data"> 
    <label for="file">File name:</label><br /> 
    <input type="file" name="file" id="file" /><br /> 
    <input type="submit" value="Upload" /> 
</form> 
<% if (Model.Count > 0) { %> 
    <% foreach (FileInfo mediaFile in Model) { %> 
    <img width="100px" height="100px" 
     src="<%:ResolveUrl("~/audio.png") %>" border="0" alt="<%: mediaFile.Name %>" />    //................ 

文件上传我重定向到/上传/多媒体动作和内容之后显示在正常的窗口,而不是在的ThickBox。

如何在文件上传后保持ThickBox?即使在文件上传后,我也需要始终在ThickBox中显示内容。

更新: ajax文件上传。无论如何重新加载ThickBox。为什么?

视图多media.apsx

 <div id="mydiv"> 
     <% Html.RenderPartial("MultiMediaDetails", Model); %> </div> 

MultiMediaDetails.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<FileInfo>>"%> 
    <%@ Import Namespace="System.IO" %> 
<% using (Ajax.BeginForm("multi-media", "upload" , 
    new AjaxOptions { UpdateTargetId = "mydiv", HttpMethod = "Post" }, new { enctype = "multipart/form-data" })) 
{ %> 

    <label for="file">File name:</label><br /> 
    <input type="file" name="file" id="file" />&nbsp; 
    <input type="submit" value="Upload" /> 

<% }%> 

<% if (Model.Count > 0) 
    { 
    foreach (FileInfo mediaFile in Model) 
     { 
      //................... .............."/> 
+0

具有4个空格的缩进代码。支持`<`。 – Jacob 2011-01-07 05:56:10

回答

1

你不能做一个HTML文件上传通过Ajax,所以他唯一可以避免页面重新加载的方法是将上传器放在iframe中,或者使用Flash上​​传器(如SWFUpload)。

+0

为什么我不能通过Ajax做HTML文件上传?我知道我不能,但为什么?我无法使用iframe,因为ThickBox会向父窗口返回一些值。 – Alexandre 2011-01-07 06:12:49