2012-09-25 1 views
1

MVC4에서 면도 .cshtml보기가 있는데 내 userprofile 클래스의 필드를 인쇄하려고합니다. User.Identity.Name에서 Username을 얻을 수 있다는 것을 알지만 부분적으로 현재 로그인 한 사용자의 다른 속성에 액세스하는 방법을 모르겠습니다. 내 컨트롤러에서이 작업을 수행하고 내 관점에서이를 참조해야합니까? 그렇다면 모든 컨트롤러에서이 변수를 설정하지 않으므로 모든 뷰에서 사용할 수있는 컨트롤러가 있습니까? 보기에서 UserProfile 모델 클래스에 정의 된대로 현재 사용자 속성에 액세스하는 간단한 방법이 있습니까? 문맥을 알려주는 것. 내 모델은 ...현재 사용자의 AccessSimpleMemberShipprovider 속성에 액세스하는 방법 ASP.net MVC4

public class UserProfile 
    { 
     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int UserId { get; set; } 
     public string UserName { get; set; } 

     //Added to round out requirements for site user profile 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Site { get; set; } 
    } 

보기에서 이름에 액세스해야합니다. 만약 컨트롤러에 넣으면 모든 페이지에서 부분적인 페이지이므로 모든 컨트롤러에서이 작업을 수행해야합니다.

답변

1

중요한, 민감하지 않으며 응용 프로그램의 안정성에 영향을주기 때문에 세션 변수에 넣기로 결정했습니다. 로그인 또는 등록에 내 컨트롤러에서 나는 프로 ASP.NET MVC에서와 this 게시물에서이 문제를 가지고와 세션 변수 ...

var context = new UsersContext(); 
var curuser = context.UserProfiles.First(p => p.UserName == model.UserName); 
Session["FName"] = curuser.FirstName; 

을 설정합니다. 그리고 면도기보기에서 나는 this에서 파생 된 이것을 사용합니다.

@HttpContext.Current.Session["FName"].ToString() 
0

부분보기를 제공하는 컨트롤러 작업에서 FirstButton을 ViewBag에 넣습니다.
반환 할 속성이 더있는 경우 해당 속성에 대한 ViewModel을 만들고 컨트롤러 액션이이를 반환하도록합니다.

+0

이 부분은 모든 사이트 페이지에 있으며 다른 컨트롤러에서 가져온 것이므로 모든 컨트롤러에서이를 수행해야합니다. 나는 할 수있을 것 같아.하지만 나는 그것을 한 번 할 길을 찾고 있었다. Rails와 마찬가지로 모든 뷰에 액세스 할 수있는 application_controller가 있으므로 사이트의 모든 변수가 가변적입니다. – Xaxum

관련 문제