기본 컨트롤러
public class BaseController : Controller
{
public YOUR_MODEL User{ get; set; }
protected override void Initialize(RequestContext requestContext)
{
if (Thread.CurrentPrincipal.Identity.IsAuthenticated)
{
var currentUserId = User.Identity.GetUserId();
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currentUser = manager.FindById(currentUserId);
User.UserID = currentUser.Id;
User.favoriteColor = currentUser.favoriteColor;
}
}
}
컨트롤러와 컨트롤러를 ..ovveride 시도 코드는 중복되지 않습니다. 난 그냥 내놓았다 무엇
입니다 다음과 같이 (isApproved, isLockedOut 및 MEMBERID 필드는 AspNetUsers 테이블에 내 자신의 항목입니다) :
public class MyClass
{
public string getMemberID(System.Security.Principal.IPrincipal User)//Note that this is the same name as is passed in, just personal preference
{
if (User.Identity.IsAuthenticated)
{
var currentUserId = User.Identity.GetUserId();
if (currentUserId == null)
{
return "0";
}
else
{
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currentUser = manager.FindById(currentUserId);
if (currentUser.isApproved && !currentUser.isLockedOut)
return currentUser.memberID.ToString();
else
return "0";
}
}
else
return "0";
}
}
그리고이 함께 컨트롤러에서 호출됩니다
string memberID = MyClass.getMemberID(User);
원래 의도 한 매개 변수 유형을 얻는 것이 원래의 문제였습니다. 그러나 다음 코드를 실험하고 생성했습니다.
var myUser = User;
var currentUserId = myUser.Identity.GetUserId();//Refactor: Extract Method for this line.
그런 다음 두 번째 줄을 선택하고 Refactor를 수행했습니다. 추출 방법. 결과는 어떤 유형을 전달하고 어떻게 호출해야 하는지를 배웠습니다.
필자는 다른 컨트롤러가 호출하는 단일 메서드로 ViewBag 변수를 설정하는 것에 대한 제목을 비롯하여 원래이 질문을 제기했습니다. 내 연구는 오늘 ViewBag 변수를 생성 한 컨트롤러 클래스에서 ViewBag 변수를 액세스 할 수 없다고 제안합니다. 초기 게시물에 대한 나의 실제 의도는 다른 컨트롤러의 단일 클래스에서 User.Identity 정보에 액세스 할 수있게하는 것이 었습니다. – Reid