2011-01-06 20 views
17

En MVC2 he utilizado Page.User.Identity.Name utilizando el <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>Page.User.Identity.Name en MVC3

¿Cómo puedo utilizar el mismo en MVC3?

Respuesta

28

Siempre se puede hacer algo como:

@Html.ViewContext.HttpContext.User.Identity.Name 

pero no lo hacen.

Normalmente, una vista no debe intentar obtener dicha información. Está ahí para mostrar cualquier información que pase el controlador. Debe estar fuertemente tipado a una clase de modelo que se pasa por una acción de controlador.

Así que en la acción del controlador haciendo este punto de vista:

[Authorize] 
public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     Username = User.Identity.Name 
    } 
    return View(model); 
} 

Ahora dentro de la vista no dude en utilizar esta información:

@Model.Username 
+0

No he entendido, estoy usando FormsAuthentication.RedirectFromLoginPage (user.Name, model.RememberMe); y en otra vista estoy tratando de cargar el nombre de usuario usando en _LogOnPartial.cshtml usando @if (Request.IsAuthenticated) { Bienvenido @ Page.User.Identity.Name! [@ Html.ActionLink ("Cerrar sesión", "desconexión", "Cuenta")] } else { @: [@ Html.ActionLink ("Log On", "inicio de sesión", "Cuenta")] } – learning

+0

¿Cuál es el uso de _LogOnPartial.cshtml en ese caso? y simplemente no puedo hacer eso para todos los puntos de vista? – learning

+1

@ user281180, no debe usar 'FormsAuthentication.RedirectFromLoginPage' en una aplicación ASP.NET MVC. La forma correcta de realizar una redirección es 'devolver RedirectToAction (" LoggedIn "," SomeController ")' después de haber configurado la cookie de autenticación en la respuesta (usando [FormsAuthentication.SetAuthCookie] (http://msdn.microsoft.com/en) -us/library/system.web.security.formsauthentication.setauthcookie.aspx)). Luego, dentro de la acción LoggedIn, simplemente busque el nombre de usuario y páselo al modelo de vista. Así que use '@ Model.Username' en lugar de' @ Page.User.Identity.Name'. –

11

MVC 2

<%: this.Page.User.Identity.Name %> 

MVC 3

@this.User.Identity.Name 
1

Tuve el mismo problema. Usé this tutorial para resolver este problema.

En resumen, en su opinión, poner este código:

@Context.User.Identity.Name 

Sólo asegúrese de que el proyecto está configurado para autenticar con ventanas.