将javascript变量传递给服务器端C#逻辑
有没有一种方法可以将javascript变量分配/传递/复制到C#中的服务器端变量?为了便于讨论,假设我能够解析一些JSON变量,以便在客户端上存储和分配这些变量(即var=FirstName、var=25和var=someDateTime等) 客户端上存在Javascript变量,因此为了将这些值输入服务器,您需要执行来自客户端的请求。您可能需要一种称为AJAX的方法。AJAX涉及Javascript在页面后台向服务器发出请求。您将设置一个C#web页面,该页面需要这些后台请求。如果使用GET请求,则将AJAX请求的查询字符串中的变量放入新的C#页面。如果要使用POST请求,则需要在发布到页面的数据中设置参数 像这样的库使这类事情变得非常简单。没有直接的方法从服务器端代码访问客户端代码中的变量 不需要编写处理程序、ajax帖子等,实现这一点的一种简单方法是将java脚本变量存储在一个隐藏的文本框中,然后在帖子中检索它。您还可以写回隐藏字段并向脚本提供值,例如 标记将javascript变量传递给服务器端C#逻辑,c#,javascript,asp.net,C#,Javascript,Asp.net,有没有一种方法可以将javascript变量分配/传递/复制到C#中的服务器端变量?为了便于讨论,假设我能够解析一些JSON变量,以便在客户端上存储和分配这些变量(即var=FirstName、var=25和var=someDateTime等) 客户端上存在Javascript变量,因此为了将这些值输入服务器,您需要执行来自客户端的请求。您可能需要一种称为AJAX的方法。AJAX涉及Javascript在页面后台向服务器发出请求。您将设置一个C#web页面,该页面需要这些后台请求。如果使用GET
<asp:HiddenField runat="server" Id="JavascriptValue" value="0">
通过JS将值写入控件(例如,
HiddenField
),并在回发时读取该值
您可以在页面\u Load
if (this.Request.Form["myHiddenField"] == null) {
ClientScript.RegisterHiddenField("myHiddenField", ""); }
var myValue = (!IsPostBack)
? null
: this.Request.Form["myHiddenField"];
用脚本填充它
ClientScript.RegisterOnSubmitStatement(this.GetType(),
MethodBase.GetCurrentMethod().DeclaringType.Name + "_myHiddenField",
"var res=document.getElementById('myHiddenField');if(res!=null){res.value='some value';}");
并在回发中阅读(也可在加载页面上阅读)
我所做的是将javaScript变量保存在cookie中,然后从C#读取它 JavaScript代码:
<script>
$(document).ready(function () {
createCookie("height", $(window).height(), "10");
});
function createCookie(name, value, days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
} else {
expires = "";
}
document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
}
</script>
我想你需要更具体一点,我假设你指的是ajax,还是json,或者什么…@dstarh,见上文,做了一些编辑。这有帮助吗?
JavascriptValue
控件的ID很少是“JavascriptValue”:使用$get().Value代码>这似乎是最简单的,我会尝试一下并让你知道。你将如何实现这一点?@cfarm54,作为一名软件开发人员,你想要培养的一项伟大技能是能够自己解决细节问题。我会先在谷歌上搜索AJAX和jQuery之类的东西,以便您能够从根本上理解它们。然后,当你遇到特定的死胡同时,回来问我们。目前,这个问题有点太模糊,无法给出具体的答案。
var myValue = (!IsPostBack)
? null
: this.Request.Form["myHiddenField"];
<script>
$(document).ready(function () {
createCookie("height", $(window).height(), "10");
});
function createCookie(name, value, days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
} else {
expires = "";
}
document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
}
</script>
height of browser:@Request.Cookies["height"].Value;