ASP.NET MVC 5 - przekazywanie danych

0

Witam,
jestem świeży w asp.net mvc i napotkałem pewnie dość prosty do rozwiązania problem, aczkolwiek sam tego nie widzę.
Mam 2 kontrolery: home i login. W skrócie w kontrolerze login posiadam przeładowaną action metodę Index (taka też znajduje się w home) z atrybutem POST, która zajmuje się operacjami związanymi z uwierzytelnianiem. Chcę pozyskać wpisany przez użytkownika login (no to akurat jest), a potem przekazać go do widoku w celu podmiany.
Tu się pojawia problem, ponieważ nie mam pojęcia jak przekazywać wynik działania jednej metody typu POST z jednego kontrolera do drugiej, znajdującej się w innym kontrolerze, która ma to wyrzucić do widoku.

Kod wygląda w skrócie tak:

HomeController

 public ActionResult Index(string VUsername)
{
       bool IsAuthed = System.Web.HttpContext.Current.User.Identity.IsAuthenticated;
            if (IsAuthed == true)
            {
                ViewBag.VU = VUsername;
                return View();
            }
            //......inne operacje
}

LoginController

	[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public virtual ActionResult Index(LoginViewModel model)
	{
		//......inne wccześniejsze operacje
		var authenticationResult = authService.SignIn(model.Username, model.Password);
                if (authenticationResult.IsSuccess)
                {
                	ViewUsername = model.Username;
                	return RedirectToAction("Index", "Home", new { VUsername = ViewUsername });   //TUTAJ 
                }
	}

Próbowałem przekierowania RedirectToAction, ale niestetu w takiej formie nie działa.
Debuggowanie kodu pokazało, że w LoginControllerze zmienna

ViewUsername

jest normalnie wypełniana, natomiast w HomeControllerze zmienna ViewBag.VU

 jest pusta nawet po poprawnym zalogowaniu.
0

Może spróbuj zmienić

 string VUsername 

na LoginViewModel model

 i do niego przesłać dane z <code class="csharp">RedirectToAction("Index", "Home", new { VUsername = ViewUsername });

.
Lub ewentualnie przed przesłaniem do

 string VUsername 

przekonwertować bezpośrednio na string (choć domyślam się, że wartość pewnie już ma postać stringa...spróbować nie zaszkodzi) RedirectToAction("Index", "Home", new { VUsername = ViewUsername.ToString(); });

0

I co, teraz będziesz się bawił w przekazywanie nazwy usera do każdego kontrolera?
To powinieneś mieć w System.Web.HttpContext.Current.User.Identity.Name.

1 użytkowników online, w tym zalogowanych: 0, gości: 1