2013-07-11 20 views
0

當用戶點擊ASP.net頁面上的一個按鈕,我需要如何在asp:button上調用javascript函數和c#代碼?

  1. asp:fileUpload服務器上的文件夾中保存

    文件 - 我想這需要在C#中How to correctly use the ASP.NET FileUpload control

  2. 做,像
  3. 運行像How to call javascript function from asp.net button click event

有沒有一種方法來組合使用C#和Javascript實現什麼,我需要一個javascript函數?如果不是,我該怎麼做?

+0

你意味着在客戶端或服務器上調用/執行Javascript函數? –

回答

4

嘗試使用asp:button元素的onClientClick屬性。

例,在你的.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

2

請注意,除非服務器端代碼(本例中爲C#)完全完成並且返回給客戶端,否則JavaScript實際上不會「運行」。一旦該頁面在客戶端呈現,然後 JavaScript在客戶端上運行。

所以,爲了執行您的JavaScript代碼,您所需要做的就是將其包含在返回給客戶端的頁面中。有很多方法可以做到這一點,這些選項取決於您使用的是WebForms還是MVC。

例如,您可能在WebForms中使用類似RegisterStartupScript的東西。或者,您可以只在PlaceHolder控件中使用Visible=false存在JavaScript代碼,並且只允許該控件在希望運行JavaScript代碼的響應中可見。 (大致相同的方法也是通過MVC只是包裝的JavaScript代碼在服務器端的狀態容易使用,以確定是否呈現與否。)

主要的是要記住的是,你不「跑來自C#的JavaScript代碼「或類似的東西。服務器端和客戶端代碼之間存在很大的分離。服務器端代碼最終構建它發送回客戶端的頁面,該頁面可以包含在該客戶端上運行的JavaScript代碼。