天天看點

C#代碼與javaScript函數的互相調用

問:

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、函數聲明為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="按鈕" οnclick="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 οnkeypress="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;

}

繼續閱讀