【问题标题】:ThickBox - update inside without redirectThickBox - 在没有重定向的情况下更新内部
【发布时间】:2011-01-07 05:39:04
【问题描述】:

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

【问题讨论】:

  • 缩进代码有 4 个空格。支持&lt;

标签: jquery asp.net-mvc thickbox


【解决方案1】:

您无法通过 Ajax 上传 HTML 文件,因此避免页面重新加载的唯一方法是将上传器放在 iframe 中或使用像 SWFUpload 这样的 Flash 上传器。

【讨论】:

  • 为什么我不能通过 Ajax 上传 HTML 文件?我知道我不能,但为什么呢?我不能使用 iframe,因为ThickBox 会向父窗口返回一些值。
  • 我不确定为什么 JavaScript/HTML 是这样设计的。它真的不是为 Ajax 设计的。
  • 如果您的目标受众可以选择,我还是建议您使用 Flash 上传器。 HTML文件上传非常糟糕(不能很容易地设置样式,一次只上传一个文件,需要回发,无法控制文件浏览器中显示的文件类型,没有进度回调等)。使用 Flash 上传器(SWFUpload 非常棒),您可以避免潜在的悲伤。
  • 我用过 iframe。我工作很好。但。文件上传后,我需要刷新ThickBox 内容(文件列表,请参阅我的代码)以显示上传的新文件。如果不重定向到另一个页面或销毁ThickBox,我该如何做到这一点?
  • 我不想使用 Flash,因为我需要学习动作脚本语言。我更喜欢使用 Silverlight。
猜你喜欢
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 2019-10-15
  • 2012-07-12
  • 2014-09-17
  • 2021-02-11
  • 2021-04-05
  • 1970-01-01
相关资源
最近更新 更多