2011-10-20 21 views
7

Nel mio App_code, ho una funzione di supporto chiamata FormatTelephone(string number) in Formatter.cshtml. Ho provato ad accedervi in ​​una vista parziale da @Formatter.FormatTelephone(number). Quando ho provarlo, si diceRazor @helper in App_Code non accessibile

Messaggio di errore del compilatore: CS0103: Il nome 'Formatter' non esiste nel contesto corrente

Qual è la probabile causa di esso? Grazie!

risposta

7

mi sono imbattuto in questo problema esatto in cui la distribuzione del sito su un altro server. Assicurati che il file App_Code/Formatter.cshtml sia effettivamente copiato sul server! Il mio errore è stato che il file ha un'azione build impostata su 'Nessuna'. Fare clic con il pulsante destro del mouse sul file e selezionare Proprietà, quindi impostare l'azione di compilazione su "Contenuto".

NOTA:

Se non si dispone di asp.net mvc 3/4 installato assicurarsi che le seguenti DLL sono nella cartella bin.

  • System.Web.Mvc
  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages
  • System.Web.WebPages.Razor

Scott Hanselman ha un post sul blog su ciò che potrebbe causare il problema. BIN Deploying ASP.NET MVC 3 with Razor to a Windows Server without MVC installed

+0

Mi sono imbattuto nella stessa situazione. Gli helper non funzionavano nel server distribuito e il problema è che per impostazione predefinita i file di supporto hanno l'azione di compilazione impostata su "Nessuno". Grazie per il suggerimento! – vcRobe

1

le seguenti opere per me in ~/App_Code/Formatter.cshtml:

@helper FormatTelephone(string number) 
{ 
    <div>Formatted @number</div> 
} 

e poi in qualche vista:

@Formatter.FormatTelephone("123") 
+0

Sì. Voglio condividere questa funzione di aiuto in più viste, quindi l'ho messo in "App_code \ Formatter.cshtml'. Sto provando ad accedervi in ​​'Views \ Shared \ _InfoView.cshtml'. Tuttavia, non funziona e dice che il 'formatter' non esiste. È strano, perché quando lo digito, intellisense ha riconosciuto 'Formatter'. – uni

+0

@uni, quale parametro stai passando? Deve essere una stringa. Prova a codificare un valore come ho fatto nel mio esempio. –

+0

Sì, sono sicuro che è una stringa. – uni

Problemi correlati