web-dev-qa-db-fra.com

ASP.Net MVC3 Html.PasswordFor ne remplit pas

À mon avis, j'ai l'élément suivant

  @Html.PasswordFor(model => model.Password)

C'est sur un écran qui crée/met à jour les détails de l'utilisateur. Lorsque j'essaie de mettre à jour l'utilisateur, ce champ reste vide. Lorsque je change cet élément en TextBoxFor, il obtient les données. Comment puis-je remplir le champ Mot de passe.

47
kolhapuri

C'est comme prévu. Les mots de passe ne sont pas remplis pour empêcher les renvois accidentels et pour empêcher la page de contenir des mots de passe non chiffrés. De toute évidence, le mot de passe était incorrect au début si vous publiez les informations d'identification.

Dans votre cas, vous pouvez créer une extension qui saisit les données ou simplement utiliser une entrée HTML de type mot de passe.

39
cwharris

Comme décrit ci-dessus, il vaut mieux éviter de le faire pour des raisons de sécurité. si vous souhaitez toujours conserver le mot de passe afin de continuer à partir de l'échec de la validation en cours, vous pouvez utiliser l'assistant HTML avec le paramètre d'attribut html:

     Html.PasswordFor(x => x.Password, new { value = Model.Password})
138
matmat

MVC vous protège de faire quelque chose comme ça pour une raison. Vous ne devriez pas être en mesure de le faire car le mot de passe des utilisateurs ne doit pas être stocké non chiffré et sans hachage. Si votre objectif est de finir sur http://plaintextoffenders.com/ cependant, vous pouvez faire quelque chose comme:

<input type="password" name="Password" id="Password" value="@Model.Password" />
5
bkaid

J'ai trouvé cette solution. J'avais besoin de mon mot de passe indiqué dans le formulaire:

@model User
@{
    @Html.Label(Model.Username, new { @class = "label" })
    @Html.TextBoxFor(Model => Model.Username, new { @class = "form-control" })

    @Html.Label(Model.Password, new { @class = "label" })
    @Html.TextBoxFor(Model => Model.Password, new { @class = "form-control make-pass" })
}

<script type="text/javascript">
    $(".make-pass").attr("type", "password");
</script>

Cela rendra votre type de mot de passe d'entrée sans perdre la valeur.

2
Ilan Olkies