Ho un helper chiamato EditableArea
che fornisce all'utente un modificabile in fase di esecuzione div
(tramite JS). EditableArea controlli helper se un'area modificabile (non collegato al MVC di Area
) con l'ID specificato esiste nel DB, in caso affermativo quindi rende HTML della zona, altrimenti visualizza markup predefinito specificato come parametro per l'helper:ASP.Net MVC3 - Passaggio del markup del rasoio come parametro
funziona tutto ok, ma mi piacerebbe cambiare in modo che il markup predefinito è specificato non come una stringa, ma nella sintassi rasoio, qualcosa di simile a:
@using (Html.EditableArea(someId))
{
<p>Click to edit contents</p>
}
o qualcosa di simile, come il modo @section
s lavoro in MVC3.
Come posso ottenere quello?
posso fare un IDisposable
che in esso è Dispose
chiude il TagBuilder, ecc, ma non posso evitare rendendo il codice Razor interno anche se l'helper trova una zona con un ID (posso cancellare il contenuto resi in Dispose() ma il codice all'interno di {} verrebbe comunque eseguito, cosa che vorrei saltare).
E se non uso using
c'è un altro modo per passare un blocco del rasoio all'helper, che può o non può essere effettivamente visualizzato dall'assistente?
Non funziona. La sintassi ' ... 'all'interno della chiamata di funzione non viene riconosciuta (espressione non valida' <') –
scusa, anteponiamo' 'con' @' (Ho aggiornato la mia risposta) –
Ottimo, funziona ora.'I tag' 'non sono affatto necessari (' @ 'è sufficiente) a meno che il markup del rasoio sia in realtà testo normale senza tag, altrimenti solo' @ 'è sufficiente. –