天天看點

ASP.NET中javascript與c#互相通路

下面要解決的問題如下:

       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 裡用可以調用前台腳本

       <script language=javascript>

  var a = "<%=ss()%>";

  alert(a);

       </script>

  方法三:

       <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','')">

  方法四:

  function SubmitKeyClick()

    if (event.keyCode == 13)

    {

      event.cancelBubble = true;

      event.returnValue = false;

      document.all.FunName.value="你要調用的函數名";

      document.form[0].submit();

    }

  <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 "其他":

        //調用其他函數

        default:

        //調用預設函數

      }

  public void enter()

    //……比如計算某值

  

       問題2.如何在JavaScript通路C#變量?

  答案如下:

  方法一:1、通過頁面上隐藏域通路 <input id="xx" type="hidden" runat="server">

       方法二:1、如背景定義了PUBLIC STRING N; 前台js中引用該變量的格式為''或"++"

       方法三: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"," ");

  方法二:使用Literal類,然後

       private void Button2_Click(object sender, System.EventArgs e)

    string str;

    str=" ";

    //Literal1.Visible=true;

    Literal1.Text=str;

<a href="http://blog.csdn.net/szg3827/archive/2008/11/25/3371806.aspx"></a>

版權

作者:靈動生活 郝憲玮

如果你認為此文章有用,請點選底端的【推薦】讓其他人也了解此文章,

ASP.NET中javascript與c#互相通路

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀