【问题标题】:asp.net store object class in viewstate (or other ideas)asp.net 在视图状态中存储对象类(或其他想法)
【发布时间】:2010-09-08 13:36:42
【问题描述】:

我已经建立了一个这样的类:

private class TestResults
{
    public bool IsAdmitted { get; set; } 
    public bool IsDuplicate { get; set; } 
    public bool IsVerified { get; set; } 
}

通过单击单选按钮列表在回发时设置此类的值。但是问题是我不知道如何在多个回发中保存这些值。我想过使用 viewstate,但我不太确定如何使用这个类。

也许我在这里遗漏了一些重要的东西。

希望有人能指出正确的方向

感谢您的宝贵时间! 亲切的问候, 标记

【问题讨论】:

  • 如果你能接受更多答案就好了,当然假设有一些正确的答案。这将帮助您建立声誉并鼓励用户回答您的问题

标签: asp.net postback viewstate


【解决方案1】:

将这个类粘贴在视图状态中非常简单:

ViewState["SomeUniqueKey"] = myTestResults;

var testResults = (TestResults)ViewState["SomeUniqueKey"];

不过,您的课程需要用[Serializable] 属性进行标记。

【讨论】:

    【解决方案2】:

    尝试改用会话缓存

     var testResults = new TestResults();
     //set values
     Session["TestResults"] = testResults;
    

    稍后检索它们:

     var testResults = Session["TestResults"] as TestResults;
     if (testResults != null)
     {
          //use it
     }
    

    【讨论】:

    • 谢谢丹尼尔,正是我想要的!
    • 不客气,马克。您介意将答案标记为正确吗?
    【解决方案3】:

    你可以使用

    Session.Add("TestResults", Your_Test_Result_Object)
    

    Session Object Explanation

    【讨论】:

      【解决方案4】:

      如果您在其他页面或整个应用程序的其他地方不需要此值,则可以使用 viewstate。

      使用Page.ViewState 对象包来存储它:

      public partial class Page1 : Page {
          protected void button1_click(object sender, EventArgs e) {
              ViewState["myObject"] = testResultsObject;
          }
      }
      

      您也可以将访问权限封装在页面上的一个属性中:

      public partial class Page1 : Page {
          public TestResults TestResults { 
              get{ return ViewState["TestResults"] as TestResults; }
              set{ ViewState["TestResults"] = value; }
          }   
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多