我有一个带有<input type='file'>元素的aspx页面。我想使用C#保存通过这些控件上传的文件。我已经看到了一些解决方案(比如这一个),我可以在On_Load中使用这些解决方案。问题是,我的input控件将使用JS动态创建,而且我不希望每次上传图像时都回发。
C#中是否有与JS的.on()方法相当的方法,以便我可以将处理程序附加到未来的控件中?
编辑:正如@ input建议的那样,我在input控件中添加了一个onchange事件处理程序:
<input type="file" onchange="saveFile" runat="server">
我的.cs后面有一个.cs处理程序:
protected void saveFile(object sender, EventArgs e)
{
var imagesDir = Server.MapPath("Images/");
var uploader = sender as FileUpload;
uploader.PostedFile.SaveAs(imagesDir + uploader.PostedFile.FileName);
}当我通过input控件选择一个文件时,函数saveFile不会运行。我用onchange="alert('hi')"代替了onchange="alert('hi')"来检查事件是否被触发了,所以我显然遗漏了一些东西.可能与postback和.asp页面循环有关吗?
发布于 2015-09-09 11:42:25
在我看来,您所描述的是一个EventHandler。也许本教程有关在ASP.NET表单页面中创建事件处理程序的内容可能对您有帮助。
如果我正确的理解你,你希望上传的文件,一旦他们被选中。html上传文件控件支持onChange事件来处理这个问题。在动态创建控件时,应该使用它定义onChange。出于安全考虑,不建议自动上传文件。
你会得到这样的东西:
<input type='file' onChange='MyEventHandler' runat='server'>
<script runat="server">
protected void MyEventHandler(object sender, System.EventArgs e)
{
//do stuff
}
</script>我建议您阅读下面的文档,正如您对JavaScript熟悉的那样,这也可能对您有用。
https://stackoverflow.com/questions/32478256
复制相似问题