有没有办法在C#中将javascript变量分配/传递/复制到服务器端变量?为了论证,让我们说我能够为我想要存储的变量解析一些JSON并在客户端上分配它们(即var = FirstName和var = 25以及var = someDateTime等)。
答案 0 :(得分:5)
客户端上存在Javascript变量,因此为了将这些值放入服务器,您需要从客户端执行请求。您可能想要一种名为AJAX的方法。 AJAX涉及Javascript在页面后台向服务器发出请求。您将设置一个需要这些后台请求的C#网页。如果您使用GET请求,那么将您的AJAX请求的查询字符串中的变量放入新的C#页面。如果您想使用POST请求,那么您将在发布到页面的数据中设置参数。
像jQuery这样的图书馆使这种事情变得非常简单。
答案 1 :(得分:1)
没有直接方法从服务器端代码访问客户端代码中的变量。
一个简单的方法,无需编写处理程序,ajax帖子等即可完成此操作,只需将java脚本变量存储在隐藏文本框中并在帖子中检索它。您也可以回写隐藏字段并使用值提供脚本,例如
<强>标记强>
<asp:HiddenField runat="server" Id="JavascriptValue" value="0">
<强>脚本强>
<script>
var myValue = <%=JavascriptValue.Value%>
</script>
服务器端强>
protected void Page_Load(object sender, EventArgs e)
{
string val = JavascriptValue.Value;
}
答案 2 :(得分:0)
通过JS将值写入控件(例如HiddenField
)并在回发中读取它。
您可以在Page_Load
if (this.Request.Form["myHiddenField"] == null) {
ClientScript.RegisterHiddenField("myHiddenField", ""); }
用脚本
填充它ClientScript.RegisterOnSubmitStatement(this.GetType(),
MethodBase.GetCurrentMethod().DeclaringType.Name + "_myHiddenField",
"var res=document.getElementById('myHiddenField');if(res!=null){res.value='some value';}");
并在回发(也是Page_Load
)
var myValue = (!IsPostBack)
? null
: this.Request.Form["myHiddenField"];
答案 3 :(得分:0)
我所做的是将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>
C#代码:
height of browser:@Request.Cookies["height"].Value;