http://www.aygfsteel.com/ebecket 返還網
          隨筆-140  評論-11  文章-131  trackbacks-0
          C#代碼與javaScript函數的相互調用
          2009年09月29日 星期二 14:32

          出處:http://dotnet.csdn.net/page/c6e71327-58f8-4300-a87d-476c6ac80c4e

                  http://hi.baidu.com/chaobaojun/blog/item/f307146f314d05d380cb4a03.html

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

          問:
          1.如何在JavaScript訪問C#函數?
          2.如何在JavaScript訪問C#變量?
          3.如何在C#中訪問JavaScript的已有變量?
          4.如何在C#中訪問JavaScript函數?

          問題1答案如下:
          javaScript函數中執(zhí)行C#代碼中的函數:
          方法一:1、首先建立一個按鈕,在后臺將調用或處理的內容寫入button_click中;
          2、在前臺寫一個js函數,內容為document.getElementById("btn1").click();
          3、在前臺或后臺調用js函數,激發(fā)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="按鈕" 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、前臺使用靜態(tài)文本控件隱藏域,將js變量值寫入其中;
          2、后臺用request["id"]來獲取值;舉例:把變量給一個隱藏控件 如lable textbox等document.getElementById("textbox的id").value=js變量值 然后后臺取 textbox.text

          例:加一個textbox    id=text1
             js變量為 var i="測試";
          js 里document.getElementById("text1").value=i;
          后臺取 就用text1.text;

          方法二:可以用cookie或session;
          4.如何在C#中訪問JavaScript函數?
          答案如下:
          c#代碼中執(zhí)行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;
          }

          文章出處:DIY部落(http://www.diybl.com/course/1_web/javascript/jsjs/200798/71020.html)

          今天試著研究了一下服務器控件來控制JS代碼(可見不僅僅HTML控件可以調用JS方法,服務器控件也可以調用JS方法),

            本人覺得有點實用,現(xiàn)分享如下:

            前臺代碼如下:

          js方法:<script language="javascript">
          function check()
          {
            if(document.all("CheckBox1").checked==true)
            {
              alert("OK");
             //document.getElementById('TextBox1').style.visibility="hidden";
             document.all('TextBox1').style.display="none"; //兩種方法均可控制TextBox的顯示與隱藏。
            }
            else
            {
             //document.getElementById('TextBox1').style.visibility="visible";
             document.all('TextBox1').style.display="block"; //兩種方法均可控制TextBox的顯示與隱藏。
            }
          }
          </script>

            一個TextBox和一個CheckBox。效果通過點擊CheckBox來控制TextBox的顯示與隱藏。

          <body>
            <form id="form1" runat="server">
            <div>
              <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
              <asp:CheckBox ID="CheckBox1" runat="server" />
            </div>
            </form>
          </body>

            在后臺頁面來調用JS方法,如下:

          protected void Page_Load(object sender, EventArgs e)
            {
              CheckBox1.Attributes.Add("onclick","check()");
            }

            一般常用的客戶端調用的方法如下:

            JS方法不變,只是修改控件為HTML控件即可:

          <body>
            <form id="form1" runat="server">
            <div>
              &nbsp;<input id="TextBox1" type="text" />
              <input id="Checkbox1" type="checkbox" onclick="check()" />
            
            </div>
            </form>
          </body>

            另外還有兩種方法,

            (1).直接在服務器控件后面加上onclick事件,后臺不寫代碼。也行,如下:

          <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
              <asp:CheckBox ID="CheckBox1" runat="server" onclick="check()" />

            (2).在工具箱中拖兩個HTML控件,然后鼠標右鍵,選“作為服務器控件運行”如下:

             <input id="TextBox1" type="text" runat="server" />
            <input id="Checkbox1" type="checkbox" runat="server" />

            然后再在后臺頁面來調用JS方法,如下:

          protected void Page_Load(object sender, EventArgs e)
            {
              CheckBox1.Attributes.Add("onclick","check()");
            }

          posted on 2009-11-13 15:18 becket_zheng 閱讀(770) 評論(0)  編輯  收藏 所屬分類: C#
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿

          隨筆分類(138)

          隨筆檔案(134)

          文章分類(77)

          文章檔案(109)

          email

          常去的Blog

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 色达县| 秦安县| 宜城市| 宝兴县| 东阳市| 石景山区| 三穗县| 运城市| 江津市| 襄汾县| 宁波市| 永仁县| 吉林市| 淮南市| 道孚县| 平乐县| 琼结县| 洪雅县| 西乡县| 河池市| 桃源县| 浠水县| 海安县| 陈巴尔虎旗| 顺昌县| 桓台县| 通辽市| 陕西省| 太和县| 长武县| 台南市| 阳山县| 北宁市| 越西县| 巨鹿县| 潮州市| 湄潭县| 三河市| 杭锦后旗| 仙桃市| 石城县|