我正在使用<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;
}
上传文件后,我在项目解决方案中显示指定文件夹中已保存的图像,但点击上传按钮后整个页面都会被加载,我不希望单击上传按钮进行回发。
答案 0 :(得分: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>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<img id="imgOrginal" runat="server" style="height: 200px; width: 200px;" />
</ContentTemplate>
</asp:UpdatePanel>
答案 1 :(得分:1)
我认为您要求通过部分请求上传文件。使用ASP.NET文件上传控件是不可能的。即使它被包装在更新面板内,也无法正常工作。它需要具有同步触发器才能使其正常工作,这意味着它可以完全回发。
如果您使用的是ASP.NET AJAX,请检查asyncfileload控件和新添加的“Ajax文件上传”控件。这些控件存在于Ajax控件工具包中。请仔细阅读文档,因为每个文档都有其局限性。
如果它们不符合您的需求,请尝试开源Ajax文件上传控件,如整齐上传等。
答案 2 :(得分:1)
如果您使用的是ASP.Net文件上传器则无法使用..您可以使用Ajax文件上传器来实现此目的
答案 3 :(得分:1)
在没有任何回发的情况下上传图像的最佳方式,您可以在Asp.net Ajax中尝试AsyncFileUpload控件。这里有一个很好的例子: -
http://www.aspsnippets.com/Articles/Using-ASP.Net-AJAX-Control-Toolkits-AsyncFileUpload-Control.aspx
三江源
答案 4 :(得分:0)
使用简单的ASP.NET WebForms无法做到这一点。
对所谓的page lifecycle进行一些研究。像你所包含的方法背后的代码是/只能作为回发或服务器端操作的一部分执行。
如果您希望客户端 - 服务器交互而不回发,那么您需要使用javascript。你可以在ASP.NET中使用javascript,我相信在.NET框架中有一个Microsoft实现的'AJAX'。
答案 5 :(得分:0)
您需要为此目的使用ajax。互联网上有很多例子。只是谷歌吧。