0

现在我要在 asp.net 中构建一个 Web 应用程序。ASP.net 的风格给我带来了一些奇怪的感觉。最困难的问题是我无法在每个 PostBack 事件之后保存变量的值(当我们单击按钮时)。我在动态用户控件在回发后获取和维护值的问题中看到了一个解决方案, 但它只熟悉与控件绑定的值。

现在我想到了2个解决方案:

  1. 和上面的参考问题一样,我会在页面 PostBack 时解绑数据。我将在 Session 中保存一个变量,在 UnBind 方法中,我将重新加载到会话中的变量。
  2. Use the ajax Button (not reload all pages):我很想用这个方法,但是听起来很容易出错。感觉在asp.net中使用Ajax控件非常难。

我的代码:

public class MainPage
{ 
    //variable 
    private List<string> lstName; 

    public MainPage()
    { 
        if (!IsPostBack)
        { 
           lstName = new List<string>(); 
        } 
    } 
}
4

1 回答 1

0

现在我找到了一种在 ASP.NET 4.0 中保存页面后面代码属性的方法。

那就是使用 ViewState["variableName"] 变量。当我需要保存一个属性(例如 var ttsHandler)时,我保存它: ViewState["ttsHandler"]=ttsHandler;

当我需要加载它的值时,我必须输入强制转换:

ttsHandler=(TTSHandler) ViewState["ttsHandler"];

但是这个解决方案仍然只适用于众所周知的类类型(字符串、整数...),因为它必须是可序列化的。不幸的是,一些属性我不能分配它的类可序列化。

例如:我必须分配一个 MyThread 类(System.Thread.Threading 的子类),而调试器需要将项目分配给 Serializa System.Thread.Threading 类,这是不可能的。

现在我必须使用另一种不太好的方法,即使用 Session["var"] 而不是 ViewState。我会尽力处理这件事,我很高兴有你的帮助。

于 2012-12-23T15:12:02.153 回答