Comment stocker des Données statiques WebMethods dans le ViewState
Maintenant, j'ai fait quelques recherches. J'ai besoin de stocker des données que j'ai récupéré d'un appel ajax de mon WebMethod sur ma page dans un endroit où je peux le tirer en arrière de nouveau à tout moment.
Je pensais au début que le ViewState serait la meilleure option. Malheureusement, vous ne pouvez pas y faire référence dans la même façon, vous pouvez non des méthodes statiques. Même si je fais l'exemple de la page, de le stocker dans le ViewState, je crois qu'il serait de instancié à la fin de la méthode de détruire toutes les données, j'ai sauvé.
J'ai besoin de ces données pour les besoins de la base de données des appels que je suis en train de faire dans d'autres WebMethods.
La méthode de base dans mon C# code-behind pour ma page aspx ressemble à ceci:
[WebMethod]
[ScriptMethod]
public static string populateModels(string[] makeIds)
{
}
Ainsi, par exemple, j'ai besoin de sauvegarder l'fait pour tirer à partir pour de futurs appels de base de données. Depuis la plupart de mes boîtes de cascade en termes de filtrage et de tirer à partir de la base de données.
Mise à jour:
Ce code fonctionne pour la récupération et le stockage des données dans le SessionState en statique WebMethods.
[WebMethod(EnableSession = true)]
[ScriptMethod]
public static string populateYears(string[] modelIds)
{
HttpContext.Current.Session["SelectedModels"] = modelIds;
string[] makeids = (string[])HttpContext.Current.Session["SelectedMakes"];
}
OriginalL'auteur Alexander Ryan Baggett | 2013-08-23
Vous devez vous connecter pour publier un commentaire.
Que Joe Enos a souligné,
ViewState
est une partie de la page, mais vous pouvez utiliserSession
cache, comme ceci:Remarque: Cela vous permettra aussi d'utiliser une partie de votre page avec ASP.NET Page AJAX Méthodes pour obtenir juste ou stocker des valeurs pour le serveur, tout aussi permettre à vos publications de page pour avoir accès aux données par le biais
Session
.ah oui, désolé j'ai oublié de vous avoir saisir les
Session
de laHttpContext.Current
, réponse mis à jour pour refléter cela.Ouais je regardais ça ici. stackoverflow.com/questions/2577183/... je peux affecter une chaîne de caractères[] pour elle, mais je n'arrive pas à tirer un string []. Il parle de casting quand j'essaie de le récupérer.
Fondamentalement, j'ai besoin d'un moyen de convertir un tableau de chaîne ou un moyen d'accéder aux éléments individuels comme des chaînes de caractères.
(string[]) est ce que je devais faire. Ok. Qui va travailler.
OriginalL'auteur Karl Anderson
ViewState est une propriété de la page, qui s'exécute par le biais de la ASP.NET WebForms page de cycle de vie. À l'aide de WebMethods avec AJAX saute la page entière du cycle de vie, et saute ViewState tout à fait.
Donc vous ne serez pas en mesure d'utiliser l'état d'affichage de la façon dont vous regardez. Afin d'utiliser AJAX et ont toujours accès à tous les Formulaires des trucs comme ViewState et les propriétés d'un contrôle, vous devez utiliser les UpdatePanels.
Vous aurez besoin de trouver des alternatives - par exemple, au lieu de l'état d'affichage, vous pouvez mettre les choses dans des champs cachés, puis utiliser javascript pour lire et remplir les champs cachés. Si vous faites cela, vous pouvez lire et écrire dans ces domaines, tant du javascript et ASP.NET des mondes.
Si vous allez à l'extérieur de la WebForms monde, vous verrez des champs cachés utilisé beaucoup plus souvent. Ils sont grands pour MVC, par exemple, où vous avez besoin de poster un modèle à part entière, y compris son identité, mais nous ne voulons pas de l'ID pour être visible comme le reste de l'propriétés dans les champs d'entrée. Il suffit de garder à l'esprit qu'ils ne sont pas du tout un secret - pas chiffré, même pas codé, et peut être facilement manipulé par l'utilisateur - à la différence de l'état d'affichage, qui est toujours validé pour aider à prévenir la simple altération, et souvent du serveur crypté.
Merci pour les conseils. Mon frère qui travaille dans le commerce électronique, a déclaré qu'ils ont utilisé les champs cachés, où il a travaillé.
OriginalL'auteur Joe Enos