0

当用户单击 ASP.net 页面上的按钮时,我需要

  1. 从服务器上的文件夹中保存文件asp:fileUpload- 我想这需要在 C# 中完成,如如何正确使用 ASP.NET FileUpload 控件

  2. 运行 javascript 函数,如如何从 asp.net 按钮单击事件调用 javascript 函数

有没有办法结合 C# 和 Javascript 来实现我所需要的?如果没有,我该怎么做?

4

2 回答 2

4

尝试使用元素的onClientClick属性。asp:button

例如,在您的 .aspx 文件中:

<script type="text/javascript">
  function myFunction()
  {
    alert('hi');
  }    
</script>
...

<asp:button id="Button1"
   usesubmitbehavior="true"
   text="Open Web site"
   onclientclick="myFunction()"
   runat="server" onclick="Button1_Click" />

在你的代码后面(.aspx.cs)

  void Button1_Click (object sender, EventArgs e)
  {
    if (this.FileUpload1.HasFile)
    {
        this.FileUpload1.SaveAs("c:\\" + this.FileUpload1.FileName);
    }

  }

更多信息在

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx

于 2013-07-11T20:37:42.873 回答
2

请注意,在服务器端代码(在本例中为 C#)完全完成并将结果页面返回给客户端之前,没有 JavaScript 真正“运行”。一旦该页面在客户端上呈现,JavaScript就会在客户端上运行。

因此,为了执行您的 JavaScript 代码,您需要做的就是将其包含在返回给客户端的页面中。有很多方法可以做到这一点,选项取决于您使用的是 WebForms 还是 MVC。

例如,您可能会在 WebForms 中使用RegisterStartupScript之类的东西。或者,您可以只让 JavaScript 代码存在于一个PlaceHolder控件中,Visible=false并且只使该控件在打算运行 JavaScript 代码的响应中可见。(大致相同的方法也很容易在 MVC 中使用,只需将 JavaScript 代码包装在服务器端条件中以确定是否呈现它。)

要记住的主要事情是,您不是“从 C# 运行 JavaScript 代码”或类似的东西。服务器端代码和客户端代码之间存在硬性分离。服务器端代码最终构建它发送回客户端的页面,并且该页面可以包含在该客户端上运行的 JavaScript 代码。

于 2013-07-11T15:15:26.520 回答