tutoriel - cours asp.net c#




Asp.Net Mvc-Comment avoir un "contrôleur" en vue partagée (4)

J'ai une vue partagée dans mon _Layout.cshtml pour mon en-tête nommé "_Header.cshtml".

Je voudrais afficher le texte et l'image de la base de données, ainsi j'ai besoin de mon contrôleur pour aller dans la base de données et le renvoyer au _Header.cshtml.

Comment puis-je faire cela parce que le contrôleur appelé est toujours différent chaque page que l'utilisateur va. Y a-t-il un moyen d'avoir un contrôleur avec Shared View?

Voici le _Layout.cshtml

    <div id="header">
        <div id="title">
            @Html.Partial("_Header")
        </div>

        <div id="logindisplay">
           @Html.Partial("_CultureChooser")
            <br />
           @Html.Partial("_LogOnPartial")
        </div>

        <div id="menucontainer">
           @Html.Partial( "_MenuPartial")
        </div>
    </div>

    <div id="main">
        @RenderBody()
        <div id="footer">
        </div>
    </div>

</div>


... 1 an plus tard voudrais juste ajouter une chose à la réponse de Dimitrov. Vous pouvez rendre le contrôleur un peu plus propre:

public class MenuController : Controller
{
    [ChildActionOnly]
    public ActionResult Header()
    {
        var model = ... // go to the database and fetch a model
        return Partial("_Header", model);
    }
}


Dans votre action de contrôle, vous pouvez spécifier le nom de la vue:

public class MenuController : Controller
{
    [ChildActionOnly]
    public ActionResult Header()
    {
        var model = ... // go to the database and fetch a model
        return View("~/Views/Shared/_Header.cshtml", model);
    }
}

Maintenant dans votre _Layout.cshtml au lieu de @Html.Partial("_Header") faites ceci:

@Html.Action("Header", "Menu")

J'espère que la question que vous avez posée est comme ... Peut-on avoir un contrôleur pour une vue de mise en page partagée.

La réponse simple est non.

Pour atteindre cet objectif, vous devez créer une vue partielle pour le même but et le mettre dans votre disposition partagée. Par ce moyen, vous pouvez vous atteindre Objectif







asp.net-mvc-3