有没有办法保持价值观? - 在回发中丢失了

时间:2010-04-19 19:46:43

标签: javascript jquery ajax

我有两个选择用作国家/州的下拉列表

一切都按照我的预期工作,但是当我做回发时,我丢失了上述<select...>中的值,保留这些值的最佳方式是什么,你能告诉我一个例子吗?

<asp: Button ID="Button1" runat="server" 
onclick="Button1_Click" Text="PostBack" />

感谢。

2 个答案:

答案 0 :(得分:2)

如果您将ASP.NET与某些jQuery一起使用,则可以在回发中设置隐藏字段的值。然后在$(document).ready()中,您只需从隐藏字段中读取该值。

在你的代码背后:

protected void Button1_Click(object sender, EventArgs e)
{
  this.countryField.Value = "WhateverValueYouWantToPersist";
}

在您的aspx文件中:

$(document).ready(function(){
  var persistedValue = <% this.countryField.ClientID %>;
  // do something...
});

<asp:HiddenField runat="server" ID="countryField" />

更新

我想出了一个更好的解决方案。我希望您只想从选择列表中捕获选定的值,而不需要保留整个国家/州集合。

我会设置我的aspx页面:

<asp:DropDownList runat="server" ID="countryField" />
<asp:DropDownList runat="server" ID="stateField" />

<asp:Button runat="server" ID="button1" OnClick="button1_click" OnClientClick="return clientSideClick()" />

<asp:HiddenField runat="server" ID="hiddenCountry" />
<asp:HiddenField runat="server" ID="hiddenState" />

在我的jQuery中,我将有一个处理该点击的功能,它捕获所选的值并设置隐藏字段的值:

function clientSideClick() {
    var state = $("#<%= this.stateField.ClientID %> :selected").val();
    $("#<%= this.hiddenState.ClientID %>").val(state);

    var country = $("#<%= this.countryField.ClientID %> :selected").val();
    $("#<%= this.hiddenCountry.ClientID %>").val(country);
}

然后在服务器端按钮回发事件中,您可以捕获隐藏状态的值,并从那里做任何您需要做的事情:

protected void button1_click(object sender, EventArgs e)
{
    string stateValue = this.hiddenState.Value;
    string countryValue = this.hiddenCountry.Value;
}

如果您确实想要重新选择以前选择的国家/州/地区对,那么在您的jQuery代码使用您的ajax例程加载国家/地区后,之前选择的值仍将位于该隐藏字段中,您可以使用来自那里的价值观。

答案 1 :(得分:1)

你有一些选择:

  • 你可以做某种'ajax post' 所以整个页面都不会刷新。
  • 您可以流式传输所选数据 从服务器返回。
  • 你可以存储 将所选数据转换为cookie。