web-dev-qa-db-fra.com

mvc3 - utilisation de vues partielles dans une zone différente

J'ai deux questions concernant les vues partielles ...

  1. Quand utiliser les vues partielles vs les méthodes @helper, j'ai utilisé les deux De façon interchangeable et je voudrais être plus cohérent dans leur utilisation de . Que faites-vous les gars?

  2. Comment faites-vous référence à une vue partielle d'un autre domaine.

J'ai un domaine appelé admin et j'ai une vue partielle dans le répertoire Views normal. Comment puis-je l'utiliser .. j'ai essayé ce qui suit ne fonctionne pas car il ne peut pas être trouvé.

@Html.Partial(VirtualPathUtility.ToAbsolute("~/Views/ControllerName/_PartialView"),
 Model)

autre j'ai essayé - 

@Html.Partial("~/Views/ControllerName/_PartialView", Model)
22
MoXplod

Je ne sais pas si vous voulez parler des assistants HTML, ou des assistants de rasoir quand vous dites "assistants" Dans tous les cas, je ne crée des assistants Html que lorsqu'il s'agit d'un petit élément individuel, comme un contrôle. 

Si vous parlez des assistants Razor, ils diffèrent des Partials en ce sens que vous pouvez les appeler comme des fonctions, en passant les paramètres de votre choix. Les partiels sont en grande partie collés au système "modèle" (et bien sûr à Temp/ViewData/Bag. 

Tout dépend de la façon dont vous voulez travailler avec le code.

Quant à votre partiel. Vous devez inclure le suffixe. 

@Html.Partial("~/Views/ControllerName/_PartialView.cshtml", Model)
35
Erik Funkenbusch

Puisque le questionneur a demandé des informations sur les domaines, voici comment procéder dans un domaine

 @Html.Partial("~/Areas/Store/Views/Pages/Checkout.cshtml")
28
Simon_Weaver

Je ne fais que donner un exemple précis et simple de ce que j'essaie de faire. Je dois pouvoir me déconnecter d'une page de zone à l'aide de la vue partielle située dans le dossier partagé principal. Voici ce que j'ai fait:

  1. À la vue de la zone, je me réfère à la vue partielle en

       <div class="float-right">
            <section id="login">            
              **@Html.Partial("~/Views/Shared/_LoginPartial.cshtml")**
            </section>
       </div>
    
  2. Dans le dossier partagé principal où se trouvait le code _LoginPartial , j'ai ajouté {new = area ("")}, à partir de: 

    using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
    

    à: 

    using (Html.BeginForm("LogOff", "Account", **new { area = "" },** FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
    

J'espère que cela contribue de quelque façon!

1
leah

Une autre option consiste à partager la vue partielle que vous souhaitez partager entre les zones.

Vous le placez donc dans le dossier principal ~/Views/Shared /, par exemple. 

~/Views/Shared/_MyPartialView.cshtml.

Vous pouvez ensuite vous y référer à partir de n'importe quel endroit en disant

@Html.Partial("_MyPartialView")
0
Philip Johnson