在客户端访问服务器端变量,反之亦然Asp.Net和javascript
我有一个在客户端添加服务器端变量的要求,反之亦然。因为我需要使用javascript从客户端设置一个值,并在代码隐藏页面中访问相同的值 我必须使用C#Net和javascript在客户端访问服务器端变量,反之亦然Asp.Net和javascript,asp.net,Asp.net,我有一个在客户端添加服务器端变量的要求,反之亦然。因为我需要使用javascript从客户端设置一个值,并在代码隐藏页面中访问相同的值 我必须使用C#Net和javascript 请给出任何说明您只需使用代码块()将变量写入javascript即可: var mJSVariable=; 相反,最简单的方法是将JS值写入服务器端的隐藏表单字段,并在服务器端获取它: <input type="hidden" id="myHiddenId" runat="server" /> // J
请给出任何说明您只需使用代码块(
)将变量写入javascript即可:
var mJSVariable=;
相反,最简单的方法是将JS值写入服务器端的隐藏表单字段,并在服务器端获取它:
<input type="hidden" id="myHiddenId" runat="server" />
// Javascript
var myHidden = document.getElementById("<%:myHiddenId.ClientId%>");
myHidden.value = myJSVariable;
// Code behind
var myJSVariableValue = myHiddenId.Value;
//Javascript
var myHidden=document.getElementById(“”);
myHidden.value=myJSVariable;
//代码隐藏
var myJSVariableValue=myHiddenId.Value;
我通常是通过ASP.NETHiddenField执行此操作的
在JS中,您可以通过(JQuery示例):
$(“输入[Name$=''u IDofField']”)val()代码>
在ASP.NET上,您可以通过IDofField.Value
属性访问它 可以将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>
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
您可以在服务器端.cs文件中声明一些变量,如public int myServerSideINT
,并可以使用
<script type="text/javascript">
function getServerSideVAR()
{
var serverVAR=<%= this.myServerSideINT %>;
}
</script>
函数getServerSideVAR()
{
var serverVAR=;
}
我希望这将对您有所帮助我遇到过这样的情况,即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
我希望这会有帮助 发布代码的相关部分1)在您的示例中,您是否已将隐藏的表单字段写入js变量。2) 我们可以这样做吗:var mJSvar=
@VoodooChild-1)你可以,如果我使用的是JS文件,而不是内联JS,我会这样做。2) 当然可以,但是如果FirstNameProperty
是一个字符串,您应该将整个
块放在单引号或双引号中。谢谢!关于#2-假设我有一个单独的JS文件,没有内联,我还能引用我的模型吗?(我是MVC和JavaScript的初学者,并且仍然习惯了很多概念)@VoodooChild-只要变量没有封装在闭包中(即,它是“公共的”),你就应该能够做到。这是一个很好的解决方案。注意:字符串始终必须以''开头和结尾,否则这将不起作用(例如:serverVAR='';)。顺便说一句:为什么这对我来说是一个synatxerror?@BudBrot-你刚刚帮我省了一个小时的时间,让我想知道为什么我的简单代码不起作用。非常有用。
Request.Cookies("currentDbCompras").Value