none
MVC HELPER RRS feed

Respuestas

  • Layout presenta una estructura visual y funcional común que puede ser utilizada por cualquier vista, por tanto, bajo la forma como escribes el Layout todos los métodos de acción que invocan a una vista -que referencia a Layout- deben definir la propiedad 'ViewBag.NombreEmpresa', de no hacerlo obtendrás la excepción que adjuntas. Sin embargo, hacerlo de esa manera no es lo correcto.

    Hay varias formas de establecer componentes reutilizables, una de ellas es a través de las vistas parciales, por ejemplo:

    - Layout

    <div>
            @*...*@
            @{Html.RenderAction("IrEmpresa", "Empresa");}
    </div>
    <div class="navbar-...">


    - Método de acción 'IrEmpresa'

    public ActionResult IrEmpresa()
    {
    	ViewBag.NombreEmpresa = dbEmpresa...;
    	return PartialView();
    }


    - Vista 'IrEmpresa'

    @Html.ActionLink((string)ViewBag.NombreEmpresa, "Index", "Home", ...)

    La vista  'IrEmpresa' -o como tú decidas llamarla- contendrá únicamente el método de extensión 'ActionLink()', que renderizado será incrustado en el Layout en la llamada a @Html.RenderAction


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    domingo, 25 de junio de 2017 17:54

Todas las respuestas

  • Es lo que menciona el mensaje de la excepción: los métodos de extensión no pueden definir argumentos dinámicos, y la propiedad ViewBag es un contenedor de pares con vista dinámica. 

    @Html.ActionLink((string)ViewBag.NombreEmpresa, "Index",...


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 24 de junio de 2017 22:47
  • el valor ni es nulo ni esta vacio:

    que estoy haciendo mal?

    domingo, 25 de junio de 2017 1:30
  • Layout presenta una estructura visual y funcional común que puede ser utilizada por cualquier vista, por tanto, bajo la forma como escribes el Layout todos los métodos de acción que invocan a una vista -que referencia a Layout- deben definir la propiedad 'ViewBag.NombreEmpresa', de no hacerlo obtendrás la excepción que adjuntas. Sin embargo, hacerlo de esa manera no es lo correcto.

    Hay varias formas de establecer componentes reutilizables, una de ellas es a través de las vistas parciales, por ejemplo:

    - Layout

    <div>
            @*...*@
            @{Html.RenderAction("IrEmpresa", "Empresa");}
    </div>
    <div class="navbar-...">


    - Método de acción 'IrEmpresa'

    public ActionResult IrEmpresa()
    {
    	ViewBag.NombreEmpresa = dbEmpresa...;
    	return PartialView();
    }


    - Vista 'IrEmpresa'

    @Html.ActionLink((string)ViewBag.NombreEmpresa, "Index", "Home", ...)

    La vista  'IrEmpresa' -o como tú decidas llamarla- contendrá únicamente el método de extensión 'ActionLink()', que renderizado será incrustado en el Layout en la llamada a @Html.RenderAction


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    domingo, 25 de junio de 2017 17:54
  • hola

    Html.ActionLink value of ViewBag

    How to set Dynamic title of @Html.ActionLink from Controller?

    entiendo que es correcto lo que implementas, pero que pasa si usas

    @{
    
       string empresa = (string)ViewBag.NombreEmpresa;
    
    }
    
    @Html.ActionLink(empresa , "Index",...


    podrias evaluar que contenido esta tomando la variable

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de junio de 2017 9:55