ThickBox - 在没有重定向的情况下更新内部

时间:2011-01-07 05:39:05

标签: jquery asp.net-mvc thickbox

ASP.NET MVC和jQuery ThickBox。 我在ThickBox中显示了一些内容。它包括文件上传表单

查看multi-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 %>" />                //................

文件上传后,我重定向到 / upload / multi-media 操作,内容在普通窗口中显示,而不是在ThickBox中。

[ActionName("multi-media"), HttpPost]
public ActionResult MultiMedia(HttpPostedFileBase file)
{          
    if (file.ContentLength > 0)
    {
        file.SaveAs(GenerateNewFileName(fullFileName));
        return View("multi-media", model);
    }
}

文件上传后如何留在ThickBox中?我需要一直在ThickBox中显示内容,即使在文件上传后也是如此。

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

视图 multi-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)
      {
          //...................  .............."/>

1 个答案:

答案 0 :(得分:1)

您无法通过Ajax上传HTML文件,因此避免重新加载页面的唯一方法是将上传器置于iframe或使用Flash上​​传器,如SWFUpload。