none
llamar controlador desde Layout MVC C# RRS feed

  • Pregunta

  • Hola tengo un if si el Model es null quiero llamar el controlador Home desde _Layout, Como hago para ir al controlador?

    @if (Model == null)
    {

    }

    public class HomeController : Controller
        {
            private Layers.Data.Entities db = new Layers.Data.Entities();
            // GET: Home
            [Authorize]
            public ActionResult Index()
            {
             var list = db.Empleado.ToList();
                return View(list);
            }
        }

    miércoles, 29 de marzo de 2017 18:38

Todas las respuestas

  • Lo que podrías hacer en realidas es manejarlo con ViewBag, una vez comparado eso te lleve a la view y dentro de ella comparar

    @if ViewBag.Campo = 1
    {
    codigo que quieras mostrar
    }
    else
    {
    el otro código
    }
    Saludos.


    Si serví a tu consulta, no olvides votar como útil.

    miércoles, 29 de marzo de 2017 18:48
  • Gabriela345,

    No me queda claro lo que intentas hacer pero la decisión de la vista a presentar es una tarea del método de acción, de hecho si tienes una condición a evaluar puedes redirigir a otro método de acción, pero todo ello desde el controlador, por ejemplo:

    public ActionResult NombreMetodoAccion()
    {
    	var list = db.NombreEntidad.ToList();
    	
    	if (list != null)
    		return view();		
    	else
    		return RedirectToAction("Index", "Home");
    }


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 29 de marzo de 2017 19:00
  • Lo que pasa si el Model esta null es porque no ha pasado por el controlador
    miércoles, 29 de marzo de 2017 19:04
  • Gabriela345,

    Ya me terminaste por confundir.

    Gabriela, te recomiendo ponerte en orden y ponernos en mayor contexto, ¿cómo es que una vista se presenta sin un método de acción "llamador"?. Las vistas son invocadas por un método de acción, por tanto es ahí donde debes decidir que vista mostrar o que acción tomar. _Layout.cshtml es un archivo de plantilla de la que heredan las vistas (las que especifiques), por tanto, -reitero- busca el método de acción que invoca a la vista y escribe ahí las reglas que decidan la vista a llamar o el método de acción a redireccionar o si prefieres amplía el detalle de lo que intentas hacer.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 29 de marzo de 2017 19:16
  • hola

    pero el model deberia ser un parametro del action cuando realizas un post

    public class HomeController : Controller
    {
    	
    	[Authorize]
    	public ActionResult Index()
    	{
    		using(Layers.Data.Entities db = new Layers.Data.Entities())
    		{
    			var list = db.Empleado.ToList();
    			return View(list);
    		}
    	}
    	
    	[HttpPost]
    	public ActionResult Index(ClassModel model)
    	{
    		//aqui trabajas el model
    		return View();
    	}
    } 

    definir un model de forma flotante en el controller no aplica, sino que al realizar un post en el submit del form es que este ingresa al action definido como httppost

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 29 de marzo de 2017 20:43