sen

导航

Javascript 和C#之间的互相调用和访问

Posted on 2009-12-11 09:25  sen  阅读(759)  评论(0编辑  收藏  举报

这包括了JS调用c#方法,JS访问C#变量,C# 调用JS代码,C#访问JS变量的各种方法

JS代码:

<script language="javascript" type ="text/javascript" >
        var JSVar = "This is JS Code ";
        function getcsharpstring() {
            //去调用c#的函数,请注意带参数的写法
            var mys = '<%=CSharpString("___________This is JS Code ")%>'; 
            //没有参数的可以这样写var mys = "<%=CSharpString()%>";
            alert(mys)
        }

        function getcsharpvar() {
            var mys = '<%= CSharpVar%>';//调问c#中的变量 
            alert(mys)
        }
        //此函数用于C#调用
        function CSharpCall() {
            alert("这里设置一个ookie "); 
            //设置一个cookie ,在c#读取这个cookie的值来达到访问JS变量 
            document.cookie = "JSVarToCSharp= " + JSVar;
        }
        
    </script>

c#后台代码:

public partial class _Default : System.Web.UI.Page 
{
    public string CSharpVar = "这是CSharp代码";//C#变量
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    //被JS调用
    public string CSharpString(string _string )
    { 
        return  "这是CSharp代码" + _string  ;
    }
    
    protected void Button3_Click(object sender, EventArgs e)
    {
        string jsString = "<script   language=javascript > CSharpCall() </script>";
    /*请注意:如果这个Button3_Click是一个异步方法的话(即ajax 中),那么:
    要用这一句去执行:
     ScriptManager.RegisterStartupScript(up, this.GetType(), "1","CSharpCall()",true) */
        Page.RegisterStartupScript("ggg", jsString);//调用JS方法

    }
    protected void Button4_Click(object sender, EventArgs e)
    {
    //通过读取cookie 来得到JS的变量 
        HttpCookie cookie = Request.Cookies["JSVarToCSharp"];
        if (cookie != null)
        {
            string jsVar = cookie.Value.ToString();
        }
    //可以用同样的方法让JS访问c#代码,如下
    /*
    c#(加) :
    using System.Web  
    HttpCookie   UserCookie   =   new   HttpCookie("UserName",UserName);   
      Response.Cookies.Add(UserCookie);
    (注销)
    Request.Cookies.Clear();   
    //将Cookies["UserName"]置空   
    HttpCookie   customerCookie   =   new   HttpCookie("UserName",   string.Empty);   
    Response.Cookies.Add(customerCookie); 
    JS:
    function getCookie(objName)
    {//获取指定名称的cookie的值
        var arrStr = document.cookie.split("; ");
        for(var i = 0;i < arrStr.length;i ++)
            {
                var temp = arrStr[i].split("=");
                if(temp[0] == objName) return unescape(temp[1]);
            } 
    }

    function delCookie(name)
    {//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
        var date = new Date();
        date.setTime(date.getTime() - 10000);
        document.cookie = name + "=a; expires=" + date.toGMTString();
    }

    */

    }
}

以上两个,是同一个页面的一个是前台一个是后台