2011-09-09 16 views
20

Ho due domande riguardanti viste parziali ...MVC3 - con una vista parziale in una zona diversa

  1. Quando usare una vista parziale vs metodi @helper, ho usato sia modo intercambiabile e vorrebbe ottenere più coerente nell'utilizzo di . Cosa fate ragazzi?

  2. Come si fa riferimento a una vista parziale da un'altra area.

Ho un'area chiamata admin e ho una vista parziale nella directory Views regolare. Come lo uso .. ho provato il seguente che non funziona poichè non può essere trovato.

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

altro ho provato -

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

risposta

34

Non sono sicuro se si intende aiutanti HTML o aiutanti rasoio quando si dice "aiutanti" In ogni caso, io creo solo aiutanti HTML quando si tratta di un oggetto piccolo e individuale come un controllo.

Se vuoi dire aiutanti Razor, allora essi sono diversi da partial nei che li si può chiamare come funzioni, passando qualunque parametri che si desidera. Parziali sono in gran parte bloccati con il sistema "modello" (e naturalmente Temp/Viewdata/Bag.

E 'tutto su come si desidera lavorare con il codice.

quanto riguarda la tua parziale. Si deve includere il suffisso.

@Html.Partial("~/Views/ControllerName/_PartialView.cshtml", Model) 
+2

dolce il suffisso è stato quello che mi mancava! – MoXplod

26

Dal momento che l'interrogante ha chiesto circa le aree ecco come farlo in una zona

@Html.Partial("~/Areas/Store/Views/Pages/Checkout.cshtml") 
+0

questo sembra essere necessario anche all'interno dell'area. Non ho mai avuto fortuna con ../ .. digitare percorsi relativi ma se c'è un modo per farlo sarebbe interessato a sentire –

+2

All'interno della stessa area solo "PrivacyPolicy.cshtml" funzionerà se si sta utilizzando la directory standard struttura come MVC cercherà la struttura di directory prevista. I percorsi relativi non dovrebbero funzionare AFAIK, probabilmente perché non sarebbe chiaro a cosa sia relativo a causa del modo dinamico in cui MVC cerca i percorsi. Cioè avvierebbe il root in Area, o in Area/Views/or/Area/Views/ControllerName /? Quindi è il nome del file solo per qualcosa nella struttura della directory prevista, o il percorso completo dalla radice dell'app, come nella tua risposta. – AaronLS

+0

Ho anche ottimizzato il mio mirino di visualizzazione predefinito (o come si chiama), quindi è possibile che io abbia rotto alcuni comportamenti predefiniti lungo il percorso, ma in questo modo funziona sicuramente se ti blocchi/ti senti frustrato –

1

sto solo dando esempio specifico e semplice di quello che sto cercando di fare. 0.123.Devo essere in grado di disconnettermi da una pagina area utilizzando la vista parziale situata nella cartella condivisa principale. Ecco quello che ho fatto:

  1. Alla vista zona mi riferimento la vista parziale da

    <div class="float-right"> 
         <section id="login">    
          **@Html.Partial("~/Views/Shared/_LoginPartial.cshtml")** 
         </section> 
        </div> 
    
  2. Alla cartella condivisa principale dove si trovava il codice _LoginPartial ho aggiunto {new = area ("")}, da:

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

    a:

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

La speranza che aiuta in qualche modo!

0

Un'altra opzione è quella di rendere la vista parziale che si desidera condividere tra le aree comuni.

Così si mise in principale/Vista/Shared/cartella ~, per esempio

~/Views/Shared/_MyPartialView.cshtml. 

È quindi possibile fare riferimento ad esso da qualsiasi area dicendo

@Html.Partial("_MyPartialView") 
Problemi correlati