2011-01-07 78 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