使用JavaScript调用asp.net代码

1.如何在javascript访问C#变量?
方法一:使用
<% = %
< input id = " Button3 "  type = " button "  value = " js调用c#变量 "  onclick = " return Button3_onclick() "   />
function  Button3_onclick()
{        
    alert(
' 我的名字:'+ '<%=name %>');
}
cs代码中的定义:protected 
string  name  =   " chenlaing " ;
方法二:使用Hidden隐藏控件
< input id = " Hidden1 "  runat = " server "  type = " hidden "   />
在cs代码中给该隐藏控件赋值: Hidden1.Value 
=   " 陈亮 " ;
function  Button3_onclick()
{        
    alert(document.getElementById(
" Hidden1 " ).value);
}
方法三:在cs代码中注册js脚本
string  tmp  =   " 陈全用 " ;
ClientScript.RegisterClientScriptBlock(this.GetType(), 
null " <script language='javascript'>var temp=' "   +  tmp  +   " '</script> " );
function  Button3_onclick()
{        
     alert(temp);


2 . 在javascript访问C#函数:
方法一:使用
< %>
< script  type ="text/javascript" >
          
var  s  =   " <%=ShowBehindInfo( " chenliang " )%> "
          document.write(s);
</ script >
cs后台代码:
protected string ShowBehindInfo(string name)
{
    return "姓名:" + name;
}
方法二:使用
<%   %>
< script    type ="text/javascript" >
     document.write(
" <%ShowResult();%> " ); 
</ script >
cs后台代码:
protected void ShowResult()
{
    Response.Write("我是陈全勇气");
}
方法三:
< style >
        .btn
        
{
            display
: none ;
        
}
</ style >
< asp:Button  ID ="Button1"  runat ="server"  CssClass ="btn"  Text ="Button"  OnClick ="Button1_Click"   />
< div  onclick ="invokeCharp()" > 点击调用aspx.cs的代码 </ div >
以下js代码将调用后台的cs代码
function invokeCharp()
{
    document.getElementById("Button1").click();
}
通过js调用的代码
protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("被js调用的代码");
}
方法四:
< input  type ="hidden"    name ="txtFunName" >
< input  id ="Button2"  type ="button"  value ="调用cs函数"  onclick ="return Button2_onclick()"   />
//将调用的信息存入隐藏控件中 在提交表单
function Button2_onclick()
{
    document.all.txtFunName.value="show";
    document.forms[0].submit();
}
//后台cs代码
protected void Page_Load(object sender, EventArgs e)
{
        string strFunName = Request.Form["txtFunName"] != null ? Request.Form["txtFunName"] : "";
        //根据传回来的值决定调用哪个函数
        switch (strFunName)
        {
            case "show":
                enter(); //调用该函数
                break;
            default:
                //调用默认函数
                break;
        }
}
方法五:
使用__doPostBack();
< input  id ="Button6"  type ="button"  value ="调用服务端的button"  onclick ="Button6_onclick()"   />
< asp:Button  ID ="btn"  runat ="server"    Text ="Button"  OnClick ="btn_Click"   />  
< asp:CheckBox  ID ="CheckBox1"  AutoPostBack ="true"  runat ="server"   />
function Button6_onclick()
{
   var res = "chenliang";
   __doPostBack('btn','chenlinng');
}
//以上脚本将调用以下事件代码
protected void btn_Click(object sender, EventArgs e)
{
    string target = Request.Params["__EVENTTARGET"];
    string args = Request.Params["__EVENTARGUMENT"];
    Response.Write(target + "
< Br > " + args);
}
__doPostBack解释:
是一个纯粹并且是非常简单的javascript函数
如以上代码,如果ASPX页面有包含asp:LinkButton或者带有AutoPostBack属性且其值为true的服务器控件时
ASP.NET会自动为页面生成下面的脚本
实际上调用__doPostBack函数
也就是将触发回发的控件(第一个参数)及相关参数(第二个参数)付给两个页面的隐藏控件
然后提交表单;
< input  type ="hidden"  name ="__EVENTTARGET"  id ="__EVENTTARGET"  value =""   />
< input  type ="hidden"  name ="__EVENTARGUMENT"  id ="__EVENTARGUMENT"  value =""   />
function __doPostBack(eventTarget, eventArgument)
{
   if (!theForm.onsubmit || (theForm.onsubmit() != false))
   {
      theForm.__EVENTTARGET.value = eventTarget;
      theForm.__EVENTARGUMENT.value = eventArgument;
      theForm.submit();
   }   

而在后台事件代码中可以
通过Request.Form[“__EVENTTARGET”]获取到触发页面PostBack的事件源(控件的ID)
但Button和ImageButton触发的PostBack无法通过这种方式获取到它们的ID

来自http://hi.baidu.com/chen839357/blog/item/42bb9594c12d4047d0135e60.html

你可能感兴趣的:(JavaScript)