5

今、私はいくつかの研究をしました。ページ上の WebMethod への ajax 呼び出しから取得したデータを、いつでも元に戻せる場所に保存する必要があります。

最初は、ViewState が最適なオプションになると考えていました。残念ながら、非静的メソッドと同じ方法で参照することはできません。ページのインスタンスを作成してViewStateに保存しても、メソッドの最後でインスタンス化が解除され、保存したデータが破壊されると思います。

このデータは、他の WebMethods で行っているデータベース呼び出しのために必要です。

aspx ページの C# 分離コードの基本的なメソッドは次のようになります。

    [WebMethod]
    [ScriptMethod]
    public static string populateModels(string[] makeIds)
    {

    }

したがって、たとえば、将来のデータベース呼び出しのためにプルするために、選択したメイクを保存する必要があります。私のボックスのほとんどは、フィルタリングとデータベースからのプルに関してカスケードしているためです。

アップデート:

このコードは、静的 WebMethods の SessionState でデータを取得および保存するために機能します。

    [WebMethod(EnableSession = true)]
    [ScriptMethod]
    public static string populateYears(string[] modelIds)
    {

        HttpContext.Current.Session["SelectedModels"] = modelIds;

        string[] makeids = (string[])HttpContext.Current.Session["SelectedMakes"];
     }
4

2 に答える 2

7

Joe Enos が指摘したように、これはページ インスタンスの一部ですが、次のようにキャッシュViewStateを使用できます。Session

[WebMethod(EnableSession = true)]
[ScriptMethod]
public static string populateModels(string[] makeIds)
{
    // Check if value is in Session
    if(HttpContext.Current.Session["SuperSecret"] != null)
    {
        // Getting the value out of Session
        var superSecretValue = HttpContext.Current.Session["SuperSecret"].ToString();
    }

    // Storing the value in Session
    HttpContext.Current.Session["SuperSecret"] = mySuperSecretValue;
}

注: これにより、ASP.NET AJAX ページ メソッドを使用してページの一部を使用して、値を取得またはサーバーに保存したり、ページ ポストバックがデータにアクセスしたりすることもできますSession

于 2013-08-23T16:52:46.410 に答える