Puede cambiar el tipo de base de una página a una maquinilla de afeitar uno de su propio ejemplo:
public class UserAwareViewPage : System.Web.Mvc.WebViewPage
{
public IPrincipal User { get { return Thread.CurrentPrincipal; } }
}
Y a continuación, modificar el archivo de configuración de este modo:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,
System.Web.Mvc, Version=3.0.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="Your.Namespace.UserAwareViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
Phil Haack tiene una muy buena blog post on this here.
Como alternativa, puede agregar un método de extensión al System.Web.Mvc.WebViewPage
(el tipo de base para páginas de hoja de afeitar) y usar esto.
public static IPrincipal User(this System.Web.Mvc.WebViewPage page)
{
return Thread.CurrentPrincipal;
}
Lo que sería utilizable como tal:
@if(Request.IsAuthenticated) {
<text>Signed In As <strong>@User().Identity.Name</strong>
Personalmente, prefiero el primer enfoque, pero pensé en proporcionar la segunda a una opción alternativa.
¿Estás preguntando cómo hacer @user? ¿O estás preguntando cómo hacer @MyOwnObject? –
Sí, @MyOwnObject. – JaJ