我遇到了一个场景,我需要将Textbox的值存储在TextBox1的OnChange事件中的会话变量中。
如何在会话变量中存储x的内容。
// JavaScript的 函数TextBox1_TextChanged(){
var x = document.getElementById("TextBox1").value;
var SesVar = "'<%= Session["HitCount"] = x %>'";
alert(SesVar);
// HTML
<asp:TextBox ID="TextBox1" Name="TextBox1" runat="server"
onchange="TextBox1_TextChanged()"></asp:TextBox>
请建议如何解决上述问题?
答案 0 :(得分:0)
你做不到。 当页面来自服务器时,首先执行服务器代码,然后客户端代码负责其余部分。 如果你需要做你想做的事情,那么在表单中创建一个带有该值的隐藏元素,并通过GET或POST全局变量获取该元素并将它们存储在会话中。
<form method="get" action="destination.asp">
<input id="tb1value" name="test" visibility="hidden"></input>
</form>
提交后,我们使用 javascript(或jquery,即js库),一般我们将所需的值放入该隐藏值并发送到服务器。
在您的情况下,您只需要直接使用文本框,表单就可以完成工作。
This教程可能对您有所帮助
答案 1 :(得分:0)
你不能导演它。
有两种方法可以做到这一点。
AutoPostBack to true
如下
<asp:TextBox ID="TextBox1" Name="TextBox1" runat="server" AutoPostBack='true'
onchange="TextBox1_TextChanged"></asp:TextBox>
并在TextBox1_TextChanged
上的C#(代码隐藏)中编写代码以在会话中设置
答案 2 :(得分:0)
我找到了解决问题的方法。
function TextBox1_TextChanged() {
<%
// c# code to store value runtime in session variable .
Session["HitCount1"] = TextBox1.Text ;
%>
}
<body>
<form id="form1" runat="server">
<div>
<%
// C# code to retrieve session variable value .
string x = null;
x = Session["HitCount1"].ToString().Trim();
if ((x.Equals(null)) || (x.Equals("")))
{
// Session Variable is either empty or null .
TextBox1.Text = "";
}
else
{
TextBox1.Text = Session["HitCount1"].ToString();
}
%>
<asp:TextBox ID="TextBox1" Name="TextBox1" runat="server"
AutoPostBack='true' onchange="TextBox1_TextChanged()"></asp:TextBox>
</form>
</body>
答案 3 :(得分:0)
//我找到了另一种使用cookie的解决方案。
// test.aspx code
<script language="javascript" type="text/javascript">
function writeCookie(name,value,days) {
var date, expires;
if (days) {
date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires=" + date.toGMTString();
}else{
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var i, c, ca, nameEQ = name + "=";
ca = document.cookie.split(';');
for (i = 0; i < ca.length; i++)
{
c = ca[i];
while (c.charAt(0)==' ') {
c = c.substring(1,c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length,c.length);
}
}
return '';
}
function restore(){
var sId = readCookie('sessionId');
document.getElementById("TextBox1").value = sId ;
}
function backup() {
var sId = document.getElementById("TextBox1").value;
writeCookie('sessionId', sId, 3);
}
function getMyvalSession() {
var ff = "Loading Value";
return ff;
}
function TextBox1_TextChanged() {
backup();
}
</script>
<body onload="restore()">
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" Name="TextBox1" runat="server"
AutoPostBack="True" onchange="TextBox1_TextChanged()" ></asp:TextBox>
</div>
</form>
</body>
// test.aspx.cs code
protected void Page_Load(object sender, EventArgs e)
{
Loading();
}
void Loading (){
String csname = "OnSubmitScript";
Type cstype = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the OnSubmit statement is already registered.
if (!cs.IsOnSubmitStatementRegistered(cstype, csname))
{
string cstext = " document.getElementById(\"TextBox1\").value = getMyvalSession() ; ";
cs.RegisterOnSubmitStatement(cstype, csname, cstext);
}
}