cs获取js变量值
在工作过程中,发现js调用c#程序的时候,会出现一些无法获取js变量的情况,由于page_load先于javascript执行,故有可能导致此错误,而将js变量,如"+str+" 中的+str+作为string类型,直接传递给c#后台中
以下为验证过的可行性的cs获取js变量值的方法:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> <script type="text/javascript"> function TestValue() { var str = "这是测试的输入值"; UseCallback(str); } function GetValye(value) { document.getElementById("TextBox1").value = value; } </script> </head> <body onload="TestValue();"> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </div> </form> </body> </html>
后台C#代码:
using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler { string callback = ""; protected void Page_Load(object sender, EventArgs e) { string strRefeence = Page.ClientScript.GetCallbackEventReference(this, "arg", "GetValye", "content"); string strScript = "function UseCallback(arg, content){" + strRefeence + ";}"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UseCallback", strScript, true); } public void RaiseCallbackEvent(string eventArg) { if (eventArg.Equals("这是测试的输入值")) { callback = "传值正确"; } else { callback = "传值错误"; } } public string GetCallbackResult() { return callback; } }
浙公网安备 33010602011771号