10
votes

Comment utiliser l'utilisateur.Identifity.nom comme paramètre pour Sqldatasource dans ASP.NET?

Pour Sqldatasource, je peux configurer la source externe pour le paramètre entrant. Par exemple, cela pourrait être une querystring, une session, un profil et ainsi de suite. Cependant, je n'ai pas la possibilité d'utiliser l'utilisateur comme source.

Je sais que je pourrais fournir une valeur pour le paramètre dans l'insertion, la sélection, la mise à jour, la suppression d'événements. Mais je ne pense pas qu'il s'agisse d'une solution élastante car j'ai déjà défini certains paramètres dans le fichier ASPX. Je ne veux pas avoir des paramètres définis dans deux endroits distincts. Cela fait du désordre.

alors puis-je définir ce paramètre dans le fichier .aspx? xxx


0 commentaires

3 Réponses :


14
votes

déclarez-le dans votre .aspx code> et remplissez-le dans votre codeBeHind:

ASPX strong> p> xxx pré>

CodeBeHind strong> p>

protected void Page_Init(object sender, EventArgs e) {
    DataSource.SelectParameters["username"].DefaultValue = User.Identity.Name;
}


5 commentaires

Merci Jan, mais c'est ce que j'aimerais éviter. Dans Yuour exemple, je dois remplir la valeur du paramètre dans CodeBeHind. Je dois donc gérer des paramètres dans deux places distinctes: dans le fichier ASPX et dans le fichier CS. Impossible de déclarer le paramètre d'ASPX et de la valeur de liaison à l'ASPX aussi?


Vous pouvez lui donner un coup en utilisant


<% # Utilisateur.Identifity.name%> Malheureusement, cela ne fonctionne pas depuis que le paramètre ne prend pas en charge la datailinding ...


Merci Jan, a réussi à CodeBehind. Il n'est pas nécessaire de déclarer une valeur par défaut dans le fichier .aspx. Ne peut qu'ajouter au fichier de codefeHind. void protégé page_init (expéditeur d'objet, eventargs e) {sqldatasource1.inserparamètres ["nom d'utilisateur"]. DefaultValue = utilisateur.Identifity.name; }


pour votre information. Si vous avez ASP: les boutons de la touche que le post-pack sur les fonctions effectuant des ops de DB ou d'une autre manière, utilisez la source de données ... Vous devez également avoir ce même code en haut de cette touche rappel. (AKA avant la databinding ou pré-Databind ()) C'est pourquoi je déteste les formulaires ASPX. Ridicule, fastidieux, sur le dessus, sans papiers, frustrant de manière frustrante à comprendre et à traiter, et complètement retardé. Mon conseil: passer au rasoir, dès que possible.



1
votes

dans la page ASP placez une source de données vierge avec une connexion de connexions

par exemple xxx

dans le code derrière sur pageload xxx / p>


0 commentaires

3
votes

Vous pouvez également y accomplir en créant une zone de texte masquée sur la page, appliquez l'utilisateur.Identifity.name à la valeur, puis utilisez le paramètre FormControl dans la source de données SQL. L'avantage ici est que vous pouvez réutiliser le code dans les paramètres Sélectionner, insérer, supprimer et mettre à jour sans code supplémentaire.

ASPX que nous avons (Nonedisplay est une classe CSS pour le masquer): P>

this.txtWebAuthUser.Text = User.Identity.Name; 


2 commentaires

Cela ne laisse-t-il pas un trou de sécurité béant, où vous pouvez imiter les autres utilisateurs en modifiant la variable dans la zone de texte cachée?


Définissez-le sur la charge de la page, de sorte que tout changement par l'utilisateur ne soit pas vu.