Cela semble que cela pourrait être une mauvaise idée, mais je ne peux pas comprendre pourquoi:Mettre un objet en session via une propriété dans ASP.NET
J'ai une classe, Cxyz, propriétés A, B et C. Il a aussi une méthode 'sGetData' qui charge ces trois propriétés de la base de données, et une méthode'SaveData 'qui le sauvegarde.
class cXYZ
public property A as string...
public property B as string...
public property B as string..
public sub sGetData()...
public sub sSaveData()...
end class
Un formulaire en ligne a la propriété suivante:
private property xyz() as cXYZ
get
return session("myXYZ")
end get
set (value as cXYZ)
session("myXYZ")=value
end set
end property
Et les événements suivants:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
if not ispostback() then
xyz=new cXYZ()
end if
end sub
Protected Sub ButtonLoad_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonLoad.Click
//Can now reference the class
txtA.text=xyz.A
txtB.text=xyz.B
txtC.text=xyz.C
end sub
Protected Sub ButtonSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonSave.Click
//Can now reference the class
xyz.A=txtA.text
xyz.B=txtA.text
xyz.C=txtC.text
xyz.sSaveData()
end sub
Je peux voir certains frais généraux avec sérialisation/désérialisation pour chaque propriété référence- il pourrait être vaut la peine de le faire:
Protected Sub ButtonSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonSave.Click
dim localxyz as cXYZ=xyz
localxyz .A=txtA.text
localxyz .B=txtA.text
localxyz .C=txtC.text
xyz=localxyz
end sub
Autre que cela, des vues sur pourquoi c'est bon ou mauvais? La classe n'est pas grande, elle maintient l'état du formulaire. Webforms sucer, etc n'est pas très utile ..
Pourquoi l'option trycast si la variable locale n'est rien? La seule raison que je peux penser est de ramasser automatiquement la copie de session de l'objet si elle n'avait pas été instanciée dans le modèle d'événement. (qui peut être valide - disons sur un second formulaire Web qui récupère les données du premier) – ScottK
Vous pouvez utiliser DirectCast pour augmenter les performances, mais si variable n'est rien, DirectCast ou TryCast le cast avec succès, sauf si le type de données n'est pas le type de référence. –