http://www.aygfsteel.com/ebecket 返還網(wǎng)
          隨筆-140  評(píng)論-11  文章-131  trackbacks-0
          C#代碼與javaScript函數(shù)的相互調(diào)用
          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函數(shù)的相互調(diào)用

          問(wèn):
          1.如何在JavaScript訪問(wèn)C#函數(shù)?
          2.如何在JavaScript訪問(wèn)C#變量?
          3.如何在C#中訪問(wèn)JavaScript的已有變量?
          4.如何在C#中訪問(wèn)JavaScript函數(shù)?

          問(wèn)題1答案如下:
          javaScript函數(shù)中執(zhí)行C#代碼中的函數(shù):
          方法一:1、首先建立一個(gè)按鈕,在后臺(tái)將調(diào)用或處理的內(nèi)容寫入button_click中;
          2、在前臺(tái)寫一個(gè)js函數(shù),內(nèi)容為document.getElementById("btn1").click();
          3、在前臺(tái)或后臺(tái)調(diào)用js函數(shù),激發(fā)click事件,等于訪問(wèn)后臺(tái)c#函數(shù);

          方法二:1、函數(shù)聲明為public
          后臺(tái)代碼(把public改成protected也可以)
          public string ss()
          {
          return("a");
          }
          2、在html里用<%=fucntion()%>可以調(diào)用
          前臺(tái)腳本
          <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="你要調(diào)用的函數(shù)名";
          document.form[0].submit();
          }
          }
          </script>

          <INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">
          <input type="hidden" name="FunName"> 〈!--用來(lái)存儲(chǔ)你要調(diào)用的函數(shù) --〉

          在.CS里有:
          public Page_OnLoad()
          {
          if (!Page.IsPost())
          {
          string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
          //根據(jù)傳回來(lái)的值決定調(diào)用哪個(gè)函數(shù)
          switch(strFunName)
          {
          case "enter()":
          enter() ; //調(diào)用該函數(shù)
          break;
          case "其他":
          //調(diào)用其他函數(shù)
          break;
          default:
          //調(diào)用默認(rèn)函數(shù)
          break;
          }
          }
          }

          public void enter()
          {
          //……比如計(jì)算某值
          }

          問(wèn)題2.如何在JavaScript訪問(wèn)C#變量?
          答案如下:
          方法一:1、通過(guò)頁(yè)面上隱藏域訪問(wèn)<input id="xx" type="hidden" runat="server">
          方法二:1、如后臺(tái)定義了PUBLIC STRING N; 前臺(tái)js中引用該變量的格式為'<%=n%>'或"+<%=n%>+"
          方法三:1、或者你可以在服務(wù)器端變量賦值后在頁(yè)面注冊(cè)一段腳本
          "<script language='javascript'>var temp=" + tmp + "</script>"
          tmp是后臺(tái)變量,然后js中可以直接訪問(wèn)temp獲得值。


          3.如何在C#中訪問(wèn)JavaScript的已有變量?

          答案如下:

          方法一:1、前臺(tái)使用靜態(tài)文本控件隱藏域,將js變量值寫入其中;
          2、后臺(tái)用request["id"]來(lái)獲取值;舉例:把變量給一個(gè)隱藏控件 如lable textbox等document.getElementById("textbox的id").value=js變量值 然后后臺(tái)取 textbox.text

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

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

          今天試著研究了一下服務(wù)器控件來(lái)控制JS代碼(可見(jiàn)不僅僅HTML控件可以調(diào)用JS方法,服務(wù)器控件也可以調(diào)用JS方法),

            本人覺(jué)得有點(diǎn)實(shí)用,現(xiàn)分享如下:

            前臺(tái)代碼如下:

          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>

            一個(gè)TextBox和一個(gè)CheckBox。效果通過(guò)點(diǎn)擊CheckBox來(lái)控制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>

            在后臺(tái)頁(yè)面來(lái)調(diào)用JS方法,如下:

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

            一般常用的客戶端調(diào)用的方法如下:

            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>

            另外還有兩種方法,

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

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

            (2).在工具箱中拖兩個(gè)HTML控件,然后鼠標(biāo)右鍵,選“作為服務(wù)器控件運(yùn)行”如下:

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

            然后再在后臺(tái)頁(yè)面來(lái)調(diào)用JS方法,如下:

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

          posted on 2009-11-13 15:18 becket_zheng 閱讀(769) 評(píng)論(0)  編輯  收藏 所屬分類: C#
          主站蜘蛛池模板: 射洪县| 铜山县| 衡东县| 上饶市| 南宫市| 滕州市| 伽师县| 怀仁县| 美姑县| 沧源| 湘西| 盐池县| 晋州市| 河津市| 通辽市| 南投县| 大同县| 温宿县| 吴川市| 宜昌市| 泰州市| 佛教| 麟游县| 炉霍县| 贵溪市| 皋兰县| 聊城市| 德安县| 安塞县| 青岛市| 昭通市| 满城县| 新密市| 同德县| 建平县| 邹平县| 新丰县| 隆子县| 瓮安县| 南郑县| 银川市|