Je cet exemple de code:Obtenir l'entité utilisatrice actuelle dans ASP.Net MVC
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
if (Request.IsAuthenticated) {
%>
Welcome <b><%= Html.Encode(Page.User.Identity.Name) %></b>!
Le hic est que je suis en train de de l'ID utilisateur et pas le nom dans le champ « nom d'utilisateur »:
User user = _userRepository.Get(...);
FormsAuthentication.RedirectFromLoginPage(user.Id.ToString(), false);
Le premier exemple de code est inclus dans la vue principale et apparaît ainsi dans chaque vue. Ce que je ne comprends pas, c'est comment passer cette vue à l'entité du modèle Utilisateur, puisque je ne l'appelle pas directement.
Modifier: Existe-t-il un seul point dans le traitement d'une requête HTTP où je peux intervenir pour injecter l'objet Modèle utilisateur dans ViewData? Je ne voudrais pas toucher chaque contrôleur + action pour y parvenir.
Mais je devrais appeler ce code de chaque contrôleur alors, en violant DRY? – ripper234
Non! Vous le faites dans une classe utilitaire, appelez-le à partir d'un contrôleur partiel dont la vue est un contrôle utilisateur. Ensuite, vous appelez méthode RenderAction <>() dans n'importe quelle vue qui doit afficher ceci, généralement dans la page maître pas dans une vue. Si vous avez besoin d'accéder à l'utilisateur à d'autres fins plus tard d'un autre contrôleur, vous appelez la propriété de la classe d'utilité. – Meligy
Avez-vous d'autres préoccupations? Avez-vous essayé et le faire fonctionner? – Meligy