elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C#] ¿No se visualiza el contenido del ViewBag?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#] ¿No se visualiza el contenido del ViewBag?  (Leído 4,015 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
[C#] ¿No se visualiza el contenido del ViewBag?
« en: 2 Julio 2017, 18:18 pm »

¡Hola! Soy nuevo en el desarrollo web con ASP.NET MVC, y tengo una duda.

Estoy haciendo un sitio web que simplemente rellene una base de datos, pero quiero que una vez el usuario haya ingresado algo en la base de datos, abajo aparezca un mensaje diciendo que la inserción fue exitosa.

Pero cuando intento hacer esto, el mensaje no se muestra.

Esta es la función que llama el form al presionar el submit:
Código
  1. [HttpPost]
  2.        public ActionResult Create(PersonModels person)
  3.        {
  4.            try
  5.            {
  6.                // TODO: Add insert logic here
  7.                //Adding to database and holding the response in the viewbag.
  8.                string strInsertion = ConnectionModels.insertPerson(person);
  9.                ViewBag.InsertionResult = strInsertion;
  10.  
  11.                return RedirectToAction("Index");
  12.            }
  13.            catch
  14.            {
  15.                return View("Index");
  16.            }
  17.        }
  18.  

Y este es el Index:
Código
  1. public ActionResult Index()
  2.        {
  3.            return View();
  4.        }
  5.  

Y pues esto es lo que intento hacer en el index.cshtml
Código
  1. <div>
  2.    <label>
  3.       @ViewBag.InsertionResult
  4.    </label>
  5. </div>
  6.  

Ese div está debajo del form, no lo publico completo porque sería muy extenso.

¡Gracias de antemano! :)


En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: [C#] ¿No se visualiza el contenido del ViewBag?
« Respuesta #1 en: 4 Julio 2017, 17:30 pm »

Y el metodo ConnectionModels.insertPerson(person) devuelve un string??

Intenta hacer un debug de que es lo que te devuelve ese metodo.


En línea


79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [C#] ¿No se visualiza el contenido del ViewBag?
« Respuesta #2 en: 7 Julio 2017, 13:55 pm »

HOLA!!!

Para estos casos recomiendo utilizar ViewData("NombreVariable") = Valor para almacenar los datos.

Mas alla de eso si no funciona y no devuelve nada debe ser como dijo @dato000 la variable strInsertion debe estar vacia al momento que seteas el ViewBag, pon un punto de interrupcion y fijate el valor de esa variable al momento del seteo.

Para testear a ver si el problema es la variable vacia podes tambien cambiar esta linea y testear a ver si sale algo o no.
Código
  1. ViewBag.InsertionResult = strInsertion;
  2. //cambiar por
  3. ViewBag.InsertionResult = "prueba";


Cualquier duda extra por favor preguntanos.

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
D71

Desconectado Desconectado

Mensajes: 24



Ver Perfil
Re: [C#] ¿No se visualiza el contenido del ViewBag?
« Respuesta #3 en: 12 Julio 2017, 00:37 am »

Llego un poco tarde a la fiesta, pero lo suyo es aclarar que el problema se produce porque el ViewBag solo se persiste entre la petición y el render de la vista.

Tu navegador efectua una nueva llamada al Index y el ViewBag se pierde.

Como te han mencionado antes puedes usar ViewData aunque personalmente lo que haria es devolver un boolean de la funcion insertPerson que indica el resultado de la operacion.
En base a ese boolean puedes decidir que mensaje mostrar (y de esta manera separas logica de negocio de la presentacion)


Código
  1. [HttpGet]
  2. public ActionResul Index(bool? success) {
  3.    if(success.HasValue) {
  4.        if(success.Value) {
  5.            ViewBag.InsertionResult = "Entry inserted correctly";
  6.        } else {
  7.            ViewBag.InsertionResult = "There was an issue inserting your entry";
  8.        }
  9.    }
  10.  
  11.    return View();
  12. }
  13.  
  14.  

Código
  1. [HttpPost]
  2. public ActionResult Create(PersonModels person)
  3. {
  4.    try
  5.    {
  6.        // TODO: Add insert logic here
  7.        //Adding to database and holding the response in the viewbag.
  8.        // This could... return a boolean
  9.        var insertResult = ConnectionModels.insertPerson(person);
  10.        return RedirectToAction("Index", new { success = insertResult });
  11.    }
  12.    catch
  13.    {
  14.        return View("Index");
  15.    }
  16. }
  17.  
« Última modificación: 12 Julio 2017, 00:39 am por D71 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Visualiza en visual Basic
Programación Visual Basic
Banker25 1 1,449 Último mensaje 7 Abril 2008, 18:48 pm
por EsTeBaN~
Clonar PC-TV (No visualiza vídeo entrambos) ?
Multimedia
Ad0nis 0 2,574 Último mensaje 12 Febrero 2009, 14:41 pm
por Ad0nis
Visualiza Consulta de tres tablas??
PHP
sanosiris 1 2,216 Último mensaje 11 Junio 2009, 23:44 pm
por дٳŦ٭
El favicon.ico no se visualiza !
Desarrollo Web
Diabliyo 7 4,125 Último mensaje 28 Julio 2011, 06:22 am
por Oblivionlight
nombres de dominio ... mail.ejemplo.com no se visualiza
Redes
Vladimirp 2 2,308 Último mensaje 10 Julio 2014, 17:12 pm
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines