C#.net equivalent for JS .on()

本文关键字:on JS for net equivalent | 更新日期: 2023-09-27 18:11:48

我有一个带有<input type='file'>元素的aspx页面。我想用c#来保存通过这些控件上传的文件。我已经看到了某些解决方案(像这个),我可以在On_Load中使用。问题是我的input控件将使用JS动态创建,我不希望每次上传图像时都回发。

是否有一些等效的方法在c# JS的.on()方法,这样我就可以附加一个处理程序到未来的控件?

EDIT:根据@Oceans的建议,我在input控件内添加了onchange事件处理程序:

<input type="file" onchange="saveFile" runat="server">

和我有一个saveFile处理程序在我的.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="saveFile",以检查事件是否正在被触发,所以我显然错过了一些东西……可能与postback.asp页面周期有关?

C#.net equivalent for JS .on()

在我看来你是在描述一个EventHandler。也许这个关于在ASP中创建事件处理程序的教程。. NET web表单页面可能对您有用。

如果我理解正确的话,你希望文件一被选中就上传。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,这可能对你也有用。