Domanda Rendering di viste parziali con Razor in MVC5


Sto cercando di ottenere una vista parziale per renderizzare usando Razor in MVC5. Quando lo uso

@{ Html.RenderPartial("ViewName", model); }

Ottengo l'errore del parser:

"{" Imprevisto dopo il carattere "@". Una volta all'interno del corpo di un blocco di codice (@if {}, @ {}, ecc.) Non è necessario utilizzare "@ {" per passare al codice.

Quando rimuovo il {}, cioè

@Html.RenderPartial("ViewName", model);

Ottengo l'errore di compilazione

Impossibile convertire implicitamente il tipo "void" in "oggetto".

Che cosa sto facendo di sbagliato?


19
2018-06-26 20:21


origine


risposte:


Non hai pubblicato il contesto di quel codice, ma quell'errore si verifica solo quando stai usando @ direttamente all'interno di un blocco di codice senza alcun involucro HTML. Per esempio:

@if (true) {
    @{ Html.RenderPartial(...); }
}

Ti darebbe l'errore, mentre:

@if (true) {
    <div>
        @{ Html.RenderPartial(...); }
    </div>
}

Andrebbe bene Potresti anche risolverlo rimuovendo il blocco di codice Html.RenderPartial interamente, incluso il @:

@if (true) {
    Html.RenderPartial(...);
}

28
2018-06-26 21:13



Puoi anche usare @Html.Partial("~/View/Home/myview.cshtml")

Restituisce una stringa while Html.RenderPartial chiama Write internally e restituisce void.


18
2017-10-22 16:28



Questo è sbagliato:

@Html.RenderPartial("ViewName", model);

Questo è corretto:

@{ Html.RenderPartial("ViewName", model);  }

L'errore di analisi potrebbe essere causato dal contenuto della vista parziale. Ad esempio, se disponi di un indirizzo email, assicurati di utilizzare @@ per uscire correttamente dal simbolo @.

"{" Imprevisto dopo il carattere "@". Una volta dentro il corpo di un codice   blocco (@if {}, @ {}, ecc.) non è necessario utilizzare "@ {" per passare a   codice.


8
2018-06-26 20:28



puoi mostrare il codice che circonda RenderPartial? Sto indovinando che sei in un ciclo, se il blocco, o qualche altro tipo di blocco di codice. Se è così, chiameresti semplicemente

Html.RenderPartial("ViewName", model);

3
2018-06-26 20:26



Controlla il tuo codice, potresti ricevere questo errore perché stai utilizzando questo codice: @{ Html.RenderPartial("ViewName", model); } dentro qualsiasi altro @{} clausola. Per favore, rileggi con attenzione il messaggio di errore che si ottiene nel browser, non è necessario utilizzare il @{} per passare al codice perché ci sei già dentro, quindi basta rimuovere @{ e } e dovresti farlo funzionare correttamente.


0
2017-10-02 15:19