客户端的Access Server端变量,反之亦然Asp.Net和javascript

时间:2010-12-09 09:47:16

标签: asp.net

我要求在客户端和其他方面添加服务器端变量。因为我需要使用javascript从客户端设置一个值,并在页面后面的代码中访问它。

我必须使用C#.Net和javascript。

请指示

5 个答案:

答案 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,并可以使用

在.aspx文件上访问它
   <script type="text/javascript">
   function getServerSideVAR()
   {
        var serverVAR=<%= this.myServerSideINT %>;
   }
   </script>

我希望这会对你有所帮助

答案 2 :(得分:1)

我通常采用的方式是通过ASP.NET HiddenField

在JS中你可以通过(JQuery示例)设置它:
$("input[Name$='_IDofField']").val(<newvalue>);
在ASP.NET上,您可以通过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

希望对您有帮助!