Gewusst wie: speichern von Daten aus statischen WebMethods in der ViewState
Nun habe ich einige der Forschung getan. Ich brauche, um zu speichern einige Daten, die ich abgerufen haben, von einem ajax Aufruf meine WebMethod auf meiner Seite in einen Ort, wo ich das ziehen kann es wieder jederzeit.
Ich dachte zuerst, dass der ViewState wäre die beste option. Leider können Sie nicht verweisen, in der gleichen Weise können Sie in nicht-statischen Methoden. Auch wenn ich-Instanz, von der Seite, um es zu speichern in ViewState, ich glaube, es wäre de-instanziiert am Ende der Methode zerstört alle Daten, die ich gespeichert.
Ich brauche diese Daten für Zwecke der Datenbank Aufrufe, mache ich in anderen WebMethods.
Die grundlegende Methode in meinem C# - codebehind für meine aspx Seite sieht wie folgt aus:
[WebMethod]
[ScriptMethod]
public static string populateModels(string[] makeIds)
{
}
Also zum Beispiel brauche ich zum speichern der ausgewählten macht, um daraus für zukünftige Datenbank-Aufrufe. Da die meisten meiner Boxen Kaskade in Bezug auf die Filterung und ziehen aus der Datenbank.
Update:
Dieser code funktioniert für das abrufen und speichern von Daten in der SessionState in statische WebMethods.
[WebMethod(EnableSession = true)]
[ScriptMethod]
public static string populateYears(string[] modelIds)
{
HttpContext.Current.Session["SelectedModels"] = modelIds;
string[] makeids = (string[])HttpContext.Current.Session["SelectedMakes"];
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Joe Enos wies darauf hin,
ViewState
ist Teil der Instanz der Seite, aber Sie könnenSession
- cache, wie hier:Hinweis: Dies erlaubt es Ihnen auch, einen Teil der Seite mit ASP.NET AJAX-Page-Methoden zu bekommen, oder speichern Sie einige Werte zum server, während auch erlauben, Ihre Seite postbacks zum haben Zugang zu den Daten über
Session
als gut.Session
aus derHttpContext.Current
Antwort zu diesem Thema aktualisiert.ViewState ist eine Eigenschaft der Seite, die läuft durch die ASP.NET WebForms Seite-Lebenszyklus. Mit WebMethods mit AJAX springt die ganze Seite lifecycle, und überspringt ViewState insgesamt.
So dass Sie nicht in der Lage sein, um ViewState verwenden die Weise, die Sie suchen. Um AJAX verwenden und haben immer noch Zugang zu allen WebForms Sachen wie ViewState und Kontrolle-Eigenschaften, die Sie verwenden müssen UpdatePanels.
Werden Sie brauchen, um alternativen zu finden - zum Beispiel, anstelle von ViewState, Sie können Dinge in versteckten Feldern verwenden Sie dann javascript, um zu Lesen und füllen Sie diese versteckten Felder. Wenn Sie dies tun, können Sie Lesen Sie und schreiben Sie diese Felder aus beiden javascript und ASP.NET Welten.