jne*_*son 1 asp.net asp.net-ajax
我有一个我正在编写的应用程序,它通过迭代节点,然后使用当前节点的信息更新页面.我在页面中有一个UpdatePanel,其中包含标签,文本框和按钮.标签列出当前节点的当前可用子节点,用户输入他们想要进入文本框的子节点,然后单击提交按钮.我在提交按钮的事件处理程序中设置了节点的新值.
这是我的问题:每次我输入要导航到的节点时,对象会将其值重置为最初初始化为的值.我甚至将相同的代码放入Windows窗体中以验证它是否正常迭代我的树,并且它可以正常工作,所以我知道我的问题是与AJAX相关的.
这是我用AJAX编写的第一个应用程序,所以我仍然在学习它是如何工作的.任何帮助将不胜感激.我用Google搜索并搜索过来.
这是HTML:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="question" runat="server" Text=""></asp:Label>
<br />
<asp:TextBox ID="answer" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Submit" runat="server" Text="Submit" onclick="Submit_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
Run Code Online (Sandbox Code Playgroud)
而C#:
protected void Submit_Click(object sender, EventArgs e)
{
int ans = int.Parse(answer.Text);
if (!current.ChildIDs.Contains(ans))
{
return;
}
current = tree.Node(ans);
question.Text = current.Question;
}
Run Code Online (Sandbox Code Playgroud)
current是当前节点,它有一个包含所有子节点ID的公共ArrayList.树是我拥有的NodeTree; 调用Node只返回新节点.当前和Tree都在Page_Load事件中初始化,并且只触发一次(首次加载页面时).
这真的很简单的代码; 我只是很难理解为什么AJAX无法正常工作.
我甚至将相同的代码放入Windows窗体中以验证它是否正常迭代我的树,并且它可以正常工作,所以我知道我的问题是与AJAX相关的.
听起来你希望ASP.NET能够记住current请求之间的对象是什么,因为这就是Windows构建应用程序的工作原理.
Web应用程序是无状态的 - 在每次请求之后,ASP.NET会丢弃所有变量.要在后续请求期间访问变量,您必须:
1)发送足够的数据以重建变量.您可以使用查询字符串参数或HTML表单值(隐藏字段提到另一个响应)来执行此操作.
2)将变量保存在Session存储中(可以在内存中或由数据库支持).
3)将值存储在coookie中.
在这三个中,最简单的方法是向您展示如何使用Session,给出您在问题中分享的内容.但是,请注意:会话有其风险 - 默认情况下,ASP.NET会话对象存储在内存中,这可能存在安全隐患.但是,您应该如何使应用程序正常运行.
// In your Page_Load code that initializes your 'current' variable
// When the user first requests the page, create a new Node
if (! this.IsPostBack)
{
Node current = new Node(); //
Session("currentNode") = current;
}
// When the user clicks a button on the page (posts), use the
// node in session instead
else
{
current = Session("currentNode");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6434 次 |
| 最近记录: |