【问题标题】:C#.net equivalent for JS .on()C#.net 等效于 JS .on()
【发布时间】:2015-12-05 08:18:33
【问题描述】:

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

C# 中是否有与 JS 的 .on() 方法等效的方法,以便我可以将处理程序附加到未来的控件?

编辑:按照@Oceans 的建议,我在input 控件中添加了一个onchange 事件处理程序:

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

我的.cs 后面有一个saveFile 处理程序:

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 页面循环有关?

【问题讨论】:

  • 确保输入是表单的一部分。你也可以通过这种方式触发 post 方法。

标签: javascript c# asp.net save


【解决方案1】:

在我看来,您描述的是EventHandler。也许this tutorial 关于在 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>

我建议您阅读以下documentation,并且您似乎对 JavaScript 很熟悉,this 也可能对您有用。

【讨论】:

  • 我不需要添加EventHandlers,但是对于尚未创建的元素,我该如何做呢? JS 的 .on() 正是这样做的……这就是我所追求的。
  • 我已经相应地编辑了我的答案,希望对您有所帮助。
猜你喜欢
  • 2011-01-29
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 2012-01-18
  • 2017-03-12
  • 1970-01-01
相关资源
最近更新 更多