ThickBox - обновление внутри без перенаправления - PullRequest
0 голосов
/ 07 января 2011

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 Ответ

1 голос
/ 07 января 2011

Вы не можете выполнить загрузку файла HTML через Ajax, поэтому единственный способ избежать перезагрузки страницы - это поместить загрузчик в iframe или использовать Flash-загрузчик, такой как SWFUpload.

...