如何在asp:button上调用javascript函数和c#代码?

时间:2013-07-11 15:06:22

标签: c# javascript asp.net

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

  1. asp:fileUpload中的文件保存在服务器上的文件夹中 - 我想这需要在C#中完成,例如How to correctly use the ASP.NET FileUpload control

  2. 运行How to call javascript function from asp.net button click event

  3. 中的javascript函数

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

例如,您可以在WebForms中使用RegisterStartupScript之类的内容。或者,您可以将PlaceHolder控件中的JavaScript代码与Visible=false一起存在,并且仅在控件中显示控件,以便运行JavaScript代码。 (通过在服务器端条件中包装JavaScript代码来确定是否呈现它,大致相同的方法也可以在MVC中轻松使用。)

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