Bạn có thể thay đổi kiểu cơ sở của một trang Razor để một trong những ví dụ của riêng bạn:
public class UserAwareViewPage : System.Web.Mvc.WebViewPage
{
public IPrincipal User { get { return Thread.CurrentPrincipal; } }
}
Và sau đó sửa đổi tập tin cấu hình của bạn như vậy:
<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 có một rất tốt blog post on this here.
Hoặc, bạn có thể thêm phương thức tiện ích vào System.Web.Mvc.WebViewPage
(loại cơ sở cho các trang dao cạo) và sử dụng phương thức này.
public static IPrincipal User(this System.Web.Mvc.WebViewPage page)
{
return Thread.CurrentPrincipal;
}
Đó sẽ là sử dụng được như vậy:
@if(Request.IsAuthenticated) {
<text>Signed In As <strong>@User().Identity.Name</strong>
Cá nhân, tôi thích cách tiếp cận đầu tiên, nhưng nghĩ rằng tôi muốn cung cấp thứ hai cho một lựa chọn thay thế.
Nguồn
2011-12-20 17:51:04
Có phải bạn hỏi làm thế nào để làm @User? Hay bạn đang hỏi làm thế nào để làm @ MyOwnObject? –
Có, @MyOwnObject. – JaJ