在客户端访问服务器端变量,反之亦然Asp.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从客户端设置一个值,并在代码隐藏页面中访问相同的值

我必须使用C#Net和javascript


请给出任何说明

您只需使用代码块(
)将变量写入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.NET
HiddenField执行此操作的

在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