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

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

JS代码:

> 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#后台代码:

_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(); } */ } }

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