我要求在客户端和其他方面添加服务器端变量。因为我需要使用javascript从客户端设置一个值,并在页面后面的代码中访问它。
我必须使用C#.Net和javascript。
请指示
答案 0 :(得分:25)
您可以使用代码块(<%%>
)简单地将变量写入javascript:
var mJSVariable = <%:myServerSideVariable%>;
相反,将JS值写入服务器端隐藏表单字段并在服务器端拾取它是最简单的事情:
<input type="hidden" id="myHiddenId" runat="server" />
// Javascript
var myHidden = document.getElementById("<%:myHiddenId.ClientId%>");
myHidden.value = myJSVariable;
// Code behind
var myJSVariableValue = myHiddenId.Value;
答案 1 :(得分:3)
你可以在服务器端.cs文件中声明一些变量,如public int myServerSideINT
,并可以使用
<script type="text/javascript">
function getServerSideVAR()
{
var serverVAR=<%= this.myServerSideINT %>;
}
</script>
我希望这会对你有所帮助
答案 2 :(得分:1)
我通常采用的方式是通过ASP.NET HiddenField
。
$("input[Name$='_IDofField']").val(<newvalue>);
IDofField.Value
属性访问它。
答案 3 :(得分:1)
可以将JavaScript变量值存储到服务器端变量中。您所要做的就是实现System.Web.UI.ICallbackEventHandler
类。
以下是演示如何操作的代码。
在aspx页面中
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Client Calback Example</title>
<script type="text/ecmascript">
function LookUpStock()
{
var lb=document.getElementById("tbxPassword");
var product=lb.value;
CallServer(product,"");
}
function ReceiveServerData(rValue){
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="password" id="tbxPassword" />
<input type="Button" onclick="LookUpStock">Submit</button>
</div>
</form>
</body>
在Code Behind(CS)页面中:
public partial class _Default : System.Web.UI.Page,System.Web.UI.ICallbackEventHandler
{
protected String returnValue;
protected void Page_Load(object sender, EventArgs e)
{
String cbReference = Page.ClientScript.GetCallbackEventReference
(this,"arg", "ReceiveServerData", "context");
String callbackScript;
callbackScript = "function CallServer(arg, context)" +
"{ " + cbReference + ";}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
"CallServer", callbackScript, true);
}
public void RaiseCallbackEvent(String eventArgument)
{
if(eventArgument == null)
{
returnValue = "-1";
}
else
{
returnValue = eventArgument;
}
}
public String GetCallbackResult()
{
return returnValue;
}
}
现在,您可以将JavaScript变量product
值转换为服务器端变量returnValue
。
答案 4 :(得分:0)
我遇到过这样的情况:HiddenField无法将javascript中的值传递给服务器端的APS.net。我的脚本正在读取一个值,然后在服务器端调用代码,但是隐藏字段上的值尚未在ASP.net hiddenfield控件上更新。 我发现的唯一解决方案是使用javascript将值写入cookie,然后在ASP.net页上读取它。
在javascript上:
function setCookie(cname, cvalue, exdays, path) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
if (path != undefined)
expires += "; path=" + path;
document.cookie = cname + "=" + cvalue + "; " + expires;
}
setCookie("currentDbCompras", _currentDb);
和服务器端
Request.Cookies("currentDbCompras").Value
希望对您有帮助!