3

我正在使用<asp:FileUpload><asp:button>控件上传文件,但我想在没有回发的情况下进行。单击按钮时,我执行以下代码。

protected void btnUpload_Click(object sender, EventArgs e)
{
    string strFileName = Path.GetFileName(FileUpload1.FileName);  //fileupload1 is the <asp:fileupload ID
    FileUpload1.SaveAs(Server.MapPath("~/UploadFile/" + strFileName + ""));
    imgUpload.ImageUrl = "../UploadFile/" + strFileName + "";  //imgupload is the <img ID on which I am showing the image after upload
    imgUpload.Visible = true;
}

上传文件后,我在项目解决方案中显示指定文件夹中保存的图像,但是在单击上传按钮时,整个页面都会被加载,我不希望在单击上传按钮时回发。

4

6 回答 6

3
just add the script

    <script language="javascript">
        function Change(obj) {
             __doPostBack("<%= btnUpload.ClientID %>", "");
        }

      </script>


Call the script in your button click event like this 
<pre>
onchange="Change(this);"
</pre>   

Your image control added in the update panel with contentTemplate 

    <asp:FileUpload ID="imgFileUploader" runat="server"   />
             <asp:Button ID="btnUpload" runat="server"  
         Text="Upload" onclick="btnUpload_Click" onchange="Change(this);" />
      <br />
        <br />
     <asp:ScriptManager ID="ScriptManager1" runat="server">
     </asp:ScriptManager>
  &nbsp;<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>    
               <img id="imgOrginal" runat="server" style="height: 200px; width: 200px;" />
              </ContentTemplate>
      </asp:UpdatePanel>

更多细节

于 2013-03-08T04:57:09.160 回答
1

我认为您是在询问有关通过部分请求上传文件的问题。使用 ASP.NET 文件上传控件是不可能的。即使它被包裹在更新面板中,它也不起作用。它需要有同步触发器才能使其工作,这意味着它会完全回发。

如果您使用的是 ASP.NET AJAX,请检查 asyncfileload 控件和新添加的“Ajax 文件上传”控件。这些控件存在于 Ajax 控件工具包中。请仔细阅读文档,因为每个文档都有其局限性。

如果它们不适合您的需求,请尝试使用开源 Ajax 文件上传控件,如整洁上传等。

于 2012-12-27T05:49:46.780 回答
1

如果您使用的是 ASP.Net 文件上传器,那么这是不可能的.. 您可以为此目的使用 Ajax 文件上传器

于 2012-12-27T05:52:04.207 回答
1

无需任何回发即可上传图片的最佳方式,您可以尝试在 Asp.net Ajax 中使用 AsyncFileUpload 控件。一个很好的例子是这里:-

http://www.aspsnippets.com/Articles/Using-ASP.Net-AJAX-Control-Toolkits-AsyncFileUpload-Control.aspx

谢谢

于 2012-12-27T05:53:15.733 回答
0

您不能使用简单的 ASP.NET WebForms 来做到这一点。

对所谓的页面生命周期进行一些研究。您所包含的方法背后的代码是 / 只能作为回发或服务器端操作的一部分执行。

如果您想要没有回发的客户端-服务器交互,那么您需要使用 javascript。您可以在 ASP.NET 旁边使用 javascript,我相信在 .NET 框架中有一个 Microsoft 实现的“AJAX”。

于 2012-12-27T05:52:54.030 回答
0

为此,您需要使用 ajax。互联网上有很多例子。只是谷歌它。

于 2014-02-20T07:35:09.487 回答