2011-01-06 10 views

Odpowiedz

28

Zawsze można zrobić coś takiego:

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

ale nie.

Zwykle widok nie powinien próbować pobierać takich informacji. Jest tam, aby wyświetlić wszelkie informacje przekazywane przez kontroler. Powinien być silnie wpisany do klasy modelu, która jest przekazywana przez działanie kontrolera.

Więc w akcji kontrolera renderowania ten pogląd:

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

Teraz wewnątrz widoku zachęcamy do korzystania z tych informacji:

@Model.Username 
+0

Nie zrozumiałem, używam FormsAuthentication.RedirectFromLoginPage (user.Name, model.RememberMe); iw innym widoku próbuję załadować nazwę użytkownika za pomocą _LogOnPartial.cshtml przy użyciu @if (Request.IsAuthenticated) { Witamy @ Page.User.Identity.Name! [@ Html.ActionLink ("Wyloguj", "LogOff", "Konto")] } jeszcze { @: [@ Html.ActionLink ("Logowanie", "LogOn", "Konto")] } – learning

+0

Co to jest użycie _LogOnPartial.cshtml w takim przypadku? i po prostu nie mogę tego zrobić dla wszystkich poglądów? – learning

+1

@ user281180, nie powinieneś używać 'FormsAuthentication.RedirectFromLoginPage' w aplikacji ASP.NET MVC. Poprawnym sposobem wykonania przekierowania jest 'return RedirectToAction (" LoggedIn "," SomeController ")' po ustawieniu pliku cookie uwierzytelniania na odpowiedź (przy użyciu [FormsAuthentication.SetAuthCookie] (http://msdn.microsoft.com/en -us/library/system.web.security.formsauthentication.setauthcookie.aspx)). Następnie wewnątrz akcji LoggedIn wystarczy pobrać nazwę użytkownika i przekazać ją do modelu widoku. Więc użyj '@ Model.Username' zamiast' @ Page.User.Identity.Name'. –

11

MVC 2

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

MVC 3

@this.User.Identity.Name 
1

Miałem ten sam problem. Użyłem this tutorial, aby rozwiązać ten problem.

W skrócie, Państwa zdaniem, umieścić ten kod:

@Context.User.Identity.Name 

Wystarczy upewnić się, że projekt jest ustawiony na uwierzytelnianie z okien.