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" /> <input type="submit" value="Upload" /> <% }%> <% if (Model.Count > 0) { foreach (FileInfo mediaFile in Model) { //................... .............."/>
答案 0 :(得分:1)
您无法通过Ajax上传HTML文件,因此避免重新加载页面的唯一方法是将上传器置于iframe
或使用Flash上传器,如SWFUpload。