asp.net中前台javascript與c#函數相互調方法

來源:互聯網
上載者:User

1.如何在JavaScript訪問C#函數?   
  
2.如何在JavaScript訪問C#變數?   
  
3.如何在C#中訪問JavaScript的已有變數?   
  
4.如何在C#中訪問JavaScript函數?   
  
  
  
問題1答案如下:   
  
javaScript函數中執行C#代碼中的函數:   
  
方法一:   
  
1、首先建立一個按鈕,在後台將調用或處理的內容寫入button_click中;   
  
2、在前台寫一個js函數,內容為document.getElementById("btn1").click();   
  
3、在前台或後台調用js函數,激發click事件,等於訪問後台c#函數;

例子:

步驟如下:
1 前台放一個按鈕。設定為隱藏。注意:不能直接設定Visible=false的方式,這樣的話在ASP.Net 2.0編譯後的代碼裡是找不到這個按鈕的。需要設定風格:style="display:none;"
2 雙擊按鈕,寫入C#方法,或者寫一個調用後台其他方法的程式碼片段
3 前台JS調用的時候,照如下寫,這樣可以類比按鈕的點擊事件,觸發後台方法:
document.getElementById("Button2").click();

樣本
ASP.Net頁:

  Code
<% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " Default.aspx.cs " Inherits = " _Default " %>

<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.1//EN " " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
     < title > Untitled Page </ title >

     < script >
     function go()
     {
         document.getElementById( " Button2 " ).click();
     }
     </ script >

</ head >
< body >
     < form id = " form1 " runat = " server " >
         < div >
             < asp:TextBox ID = " TextBox1 " runat = " server " ></ asp:TextBox >
             < asp:Button ID = " Button1 " runat = " server " Text = " Button " OnClientClick = " go();return false; " />
             < asp:Button ID = " Button2 " runat = " server " Text = " Button " OnClick = " Button2_Click " Style = " display: none; " />
         </ div >
     </ form >
</ body >
</ html >

後台C#:

  Code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
     protected void Page_Load( object sender, EventArgs e)
     {

      
     }

     protected void Button2_Click( object sender, EventArgs e)
     {
         this .SayHello();
     }

     private void SayHello()
     {
         this .TextBox1.Text = " 你好! " ;
     }
}

方法二:   
  
1、函式宣告為public後台代碼(把public改成protected也可以)   
  
             public string ss()   
  
             {   
  
                return("a");   
  
             }   
  
2、在html裡用<%=fucntion()%>可以調用前台指令碼   
  
             <script language=javascript>   
  
             var a = "<%=ss()%>";   
  
             alert(a);   
  
             </script>   
  
方法三:   
  
1、<script language="javascript">   
  
             <!--   
  
             function __doPostBack(eventTarget, eventArgument)   
  
             {   
  
                var theForm = document.Form1;       //指runat=server的form   
  
                theForm.__EVENTTARGET.value = eventTarget;   
  
                theFrom.__EVENTARGUMENT.value = eventArgument;   
  
                theForm.submit();   
  
             }   
  
             -->   
  
             </script>   
  
             <input id="Button1" type="button" name="Button1" value="按鈕" onclick="javascript:__doPostBack('Button1','')">   
  
            
  
方法四:   
  
<script language="javascript">   
  
function SubmitKeyClick()   
  
{   
  
      if (event.keyCode == 13)   
  
      {   
  
          event.cancelBubble = true;   
  
          event.returnValue = false;   
  
          document.all.FunName.value="你要調用的函數名";   
  
          document.form[0].submit();   
  
      }   
  
}   
  
</script>   
  
  
  
<INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">   
  
<input type="hidden" name="FunName"> 〈!--用來儲存你要調用的函數 --〉   
  
  
  
在.CS裡有:   
  
public Page_OnLoad()   
  
{   
  
if (!Page.IsPost())   
  
{   
  
string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";   
  
//根據傳回來的值決定調用哪個函數   
  
switch(strFunName)   
  
{   
  
case "enter()":   
  
enter() ; //調用該函數   
  
break;   
  
case "其他":   
  
//調用其他函數   
  
break;   
  
default:   
  
//調用預設函數   
  
break;   
  
}   
  
}   
  
}   
  
  
  
public void enter()   
  
{   
  
//……比如計算某值   
  
}   
  
  
  
問題2.如何在JavaScript訪問C#變數?   
  
答案如下:   
  
方法一:1、通過頁面上隱藏欄位訪問<input id="xx" type="hidden" runat="server">   
  
方法二:1、如後台定義了PUBLIC STRING N;前台js中引用該變數的格式為'<%=n%>'或"+<%=n%>+"  
  
方法三:1、或者你可以在伺服器端變數賦值後在頁面註冊一段指令碼   
  
             "<script language='javascript'>var temp=" + tmp + "</script>"  
  
             tmp是後台變數,然後js中可以直接存取temp獲得值。   
  
3.如何在C#中訪問JavaScript的已有變數?   
  
  
  
答案如下:   
  
  
  
方法一:   
  
1、前台使用靜態文本控制項隱藏欄位,將js變數值寫入其中;   
  
2、後台用request["id"]來擷取值;   
  
  
  
方法二:可以用cookie或session   
  
  
  
  
  
4.如何在C#中訪問JavaScript函數?   
  
答案如下:   
  
c#代碼中執行javaScript函數:   
  
方法一:1、Page.RegisterStartupScript("ggg","<script>SetVisible(1);</script>");   
  
方法二:使用Literal類,然後   
  
private void Button2_Click(object sender, System.EventArgs e)   
  
{   
  
string str;   
  
str="<script language='javascript'>";   
  
str+="selectRange()";   
  
str+="</script>";   
  
//Literal1.Visible=true;   
  
Literal1.Text=str;   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.