Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

96
Visualizações
Obtener valor de View a otro controlador

Tengo un controller único donde controlo todas mis vistas, así que desde aquí tengo un problema. Después de enviar datos para iniciar sesión, necesito obtener un valor enviado. Por ejemplo, tengo este controlador: HomeController , en este controlador tengo cuatro ActionResult :

Índice de resultados de acción

AcciónResultado Iniciar sesión

AcciónResultado Cuotas

AcciónResultado Cerrar sesión

Entonces, cuando el usuario inicia sesión, necesito obtener aquí el nombre de usuario para verificar que ya está conectado desde mi base de datos

Controlador de inicio :

 public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult Login(string uname, string psw) { try { ViewData["uname"] = uname; ViewData["psw"] = psw; ConexionSQL sql = new ConexionSQL(); var usuario = sql.login(uname, psw); var existencia = sql.usuarioOCobrador(uname, psw); if (existencia[0].usuario == "USUARIO") { var caracteres = Convert.ToString(psw); var pruebaUsuario = sql.datos(uname); if (pruebaUsuario[0].clave == caracteres) { return View("Cuotas", usuario); } else { ViewBag.Contra = "Contraseña incorrecta."; } } else if (existencia[0].usuario == "COBRADOR") { return RedirectToAction("Cuotas", "Home", usuario); } else { ViewBag.Usu = "Usuario incorrecto o usted no tiene los permisos para ingresar al sistema. Comuníquese con el área pertinente o el Departamento de Sistemas."; } } catch (SqlException ex) { throw ex; } return View("Index"); } public ActionResult LogOff(string uname) { ConexionSQL conexionSQL = new ConexionSQL(); conexionSQL.updateConectado(uname, false); FormsAuthentication.SignOut(); Session.Abandon(); return RedirectToAction("Index", "Home"); } public ActionResult Cuotas() { ConexionSQL sql = new ConexionSQL(); string uname = string.Empty; string psw = string.Empty; //Get your ViewData variables here if (ViewData["uname"] != null) { uname = Convert.ToString(ViewData["uname"]); } if (ViewData["psw"] != null) { psw = Convert.ToString(ViewData["psw"]); } var usuario = sql.datosCob(uname); if (usuario[0].conectado == false) { return RedirectToAction("Index", "Home"); } else { return RedirectToAction("Cuotas", "Home"); } } }

Vista de índice, aquí está el inicio de sesión:

 <form class="modal-content animate" onsubmit="return control()" method="post" action="@Url.Action("Login", "Home")"> <div class="imgcontainer"> <span onclick="document.getElementById('id01').style.display='none'" class="close" title="Cerrar">&times;</span> <img src="~/Images/00.png" alt="Logo" class="avatar"/> </div> <div class="container"> <label for="uname"><b>Usuario:</b></label> <input type="text" id="uname" placeholder="Ingrese usuario..." name="uname" onkeypress="return soloLetras(event)"/> <label for="psw"><b>Contraseña:</b></label> <input type="password" id="psw" placeholder="Ingrese contraseña..." name="psw" onkeypress="return soloNumeros(event)"/> <button type="submit">Iniciar sesión</button> </div> </form>

Pero uname siempre es null , ¿qué pasa con mi código?

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Si entiendo correctamente, necesita obtener su uname que primero publica en su método de inicio de Login y luego necesita esta variable en su método Cuotas en la misma solicitud cuando se envía el formulario. Si ese es el caso, debe usar Session para conservar sus variables de una acción de controlador a otra. Su acción de formulario es el método de inicio de Login y no el método Cuotas , por lo que su FormCollection siempre será nulo. Entonces, en tu caso, se vería así:

 public ActionResult Login(string uname, string psw) { Response.AppendHeader("Cache-Control", "no-store"); try { //Set your variables here to passed to next action Session["uname"] = uname; Session["psw"] = psw; ConexionSQL sql = new ConexionSQL(); var usuario = sql.login(uname, psw); var existencia = sql.usuarioOCobrador(uname, psw); if (existencia[0].usuario == "USUARIO") { var caracteres = Convert.ToString(psw); var pruebaUsuario = sql.datos(uname); if (pruebaUsuario[0].clave == caracteres) { sql.updateConectado(uname, true); return RedirectToAction("Cuotas", "Home"); } else { ViewBag.Contra = "Contraseña incorrecta."; } } else if (existencia[0].usuario == "COBRADOR") { sql.updateConectado(uname, true); return RedirectToAction("Cuotas", "Home"); } else { ViewBag.Usu = "Usuario incorrecto o usted no tiene los permisos para ingresar al sistema. Comuníquese con el área pertinente o el Departamento de Sistemas."; } } catch (SqlException ex) { throw ex; } return View("Index"); }

Y las puedes conseguir en tu método Cuotas así:

 public ActionResult Cuotas() { ConexionSQL sql = new ConexionSQL(); string uname = string.Empty; string psw = string.Empty; //Get your ViewData variables here if (Session["uname"] != null) { uname = Convert.ToString(Session["uname"]); } if (Session["psw"] != null) { psw = Convert.ToString(Session["psw"]); } var usuario = sql.datosCob(uname); if (usuario[0].conectado == false) { return RedirectToAction("Index"); } else { return View("Cuotas"); } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda