asp.net хранит объектный класс в viewstate (или другие идеи) - PullRequest
3 голосов
/ 08 сентября 2010

Я построил такой класс:

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

Значения этого класса устанавливаются при обратной передаче, щелкая список радиокнопок. Проблема, однако, в том, что я не знаю, как сохранить эти значения в нескольких обратных передачах. Я думал об использовании viewstate, но я не совсем уверен, как это сделать с этим классом.

Может быть, я здесь упускаю какую-то важную вещь.

Надеюсь, кто-то может указать мне правильное направление

спасибо за ваше время! С уважением, Mark

Ответы [ 4 ]

6 голосов
/ 08 сентября 2010

Просто прикрепить этот класс в viewstate довольно просто:

ViewState["SomeUniqueKey"] = myTestResults;

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

Ваш класс должен быть помечен атрибутом [Serializable].

1 голос
/ 08 сентября 2010

попробуйте вместо этого использовать кэш сеанса

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

Получение их позже:

 var testResults = Session["TestResults"] as TestResults;
 if (testResults != null)
 {
      //use it
 }
0 голосов
/ 08 сентября 2010

Если вам не нужно это значение на других страницах или в других местах приложения, вы можете использовать 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; }
    }   
}
0 голосов
/ 08 сентября 2010

Можно использовать

Session.Add("TestResults", Your_Test_Result_Object)

Объяснение объекта сеанса

...