2010-08-19 6 views
4

À l'heure actuelle, j'ai un ASP: Assistant avec 3 étapes.Conserver la valeur du champ Mot de passe sur PostBack

  1. Créer un utilisateur
  2. Formulaire à
  3. Envoyer
  4. Résumé des champs

Lorsque le bouton d'arrivée est cliqué sur la troisième étape, je voudrais créer l'utilisateur et envoyer le formulaire. J'ai la logique de cette écrit, mais le seul problème que j'ai est le suivant lorsque le bouton est appuyé sur un assistant, un postback se produit et mon champ Mot de passe:

<asp:TextBox ID="txtPassword" TextMode="Password" Width="70%" runat="server" /> 

ne conserve pas sa valeur.

Selon vous, quelle serait la méthode la plus sûre et la plus pratique pour surmonter ce problème?

Répondre

2

Je probablement développer une classe représentant les données qui sera créé par l'assistant:

public class WizardForm 
{ 
    public User NewUser {get;set;} 
    public Form FormToEmail {get;set;} 
} 

ensuite sur chaque étape par l'assistant, je mettre à jour cette classe aurait et le stocker en session:

WizardForm form = Session["WizardForm"] as WizardForm; 
if (form == null) 
{ 
    form = new WizardForm(); 
    Session["WizardForm"] = form; 
} 

form.User.Password = txtPassword.Text; // etc 

Ou vous pouvez simplement stocker le mot de passe en session et récupérer plus tard:

Session["WizardPassword"] = txtPassword.Text; 
string password = Session["WizardPassword"].ToString(); 
+0

Donc, fondamentalement, créer un objet pour stocker chaque étape de l'assistant à mesure qu'il est terminé, puis prendre l'objet et faire ce que vous voulez faire avec quand le bouton de finition est cliqué? – GaryDevenay

+0

@GaryDevenay - Exactement cela. Ou simplement stocker le mot de passe dans la session ... – GenericTypeTea

+0

comme pour stocker le mot de passe en session. Est-ce une méthode sécurisée ou devrais-je aussi crypter le mot de passe? – GaryDevenay

1

Cette interface est intégrée au contrôle TextBox asp.net en mode Mot de passe. Si vous voulez un comportement différent, vous pouvez créer votre propre contrôle de serveur de mot de passe ou utiliser un contrôle d'entrée HTML normal avec runat = "server". Vous pouvez également enregistrer le mot de passe lorsque l'utilisateur passe à l'étape suivante de l'assistant, puis afficher un espace réservé à la place de la zone de texte. Pour modifier ou modifier le mot de passe, l'utilisateur doit revenir à l'étape correspondante de l'assistant.

2

Je ne pense pas que vous ayez besoin de créer des classes; il suffit d'utiliser la ligne de code ci-dessous dans votre méthode page_load:

YourTextBoxName.Attributes["value"] = YourTextBoxName.Text ; 

Cela devrait probablement résoudre ce problème.

+0

Si vous mettez la valeur .Text dans "YourTextBoxName.Attributes [" value "] = txtPassword.Text;" votre mot de passe sera visible dans la source de la page. – wotney

+0

@wotney Votre mot de passe sera toujours facile à trouver, vous pouvez simplement changer type = "mot de passe" pour "texte" dans la source. Je pense que les solutions d'OP impliqueront toujours la recherche de mot de passe de page source facile, puisqu'elle sera du côté de client. – Fortin

Questions connexes