Gli helper html ASP.NET MVC non funzionano
-
07-07-2019 - |
Domanda
Spero che qualcuno mi possa aiutare. Ho provato a scrivere un helper HTML personalizzato per la mia applicazione MVC. Prima di tutto, ho provato con uno di prova, che scrive solo un tag
per il parametro specificato. Il fatto è che non funziona se non imposto esplicitamente lo spazio dei nomi. Ho letto molto e mentre leggo, quel metodo dovrebbe apparire senza lo spazio dei nomi di importazione in questo modo:
<%=Html.Prueba("This is a paragraph") %>
Ma questo metodo, Prueba, non viene visualizzato in VS Intellisense.
La mia classe è la seguente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
namespace EasyGoCostaRica.Helpers
{
public static class ViewsHelpers
{
//This method is just for testing. Is not working :(
public static string Prueba(this HtmlHelper helper, string param1)
{
return string.Format("<p>{0}</p>", param1);
}
}
}
Grazie in anticipo!
Soluzione
Lo spazio dei nomi deve essere dichiarato / importato da qualche parte. Puoi farlo anche:
- all'interno della pagina stessa
- pagina principale o
- all'interno del file web.config
Se vuoi qualcosa globale è meglio configurare il tuo spazio dei nomi in web.config.
Usa la direttiva < @import ... >
per i primi due e l'elemento di configurazione < namespace >
per l'ultimo.
Altri suggerimenti
Puoi aggiungere lo spazio dei nomi a web.config e non dovrai più preoccupartene in seguito.
All'interno di web.config, dovresti vedere qualcosa del genere:
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Linq"/>
<add namespace="System.Collections.Generic"/>
</namespaces>
Aggiungi semplicemente una riga con il tuo spazio dei nomi.
Se non si desidera importare globalmente gli helper, ogni directory può avere il proprio web.config. Se non diversamente specificato, quelli "sotto" web.configs erediterà le impostazioni da web.configs superiori. Se segui questa strada, fai attenzione, alcune impostazioni possono essere configurate solo a livello di applicazione. Può diventare rapidamente confuso.
Per qualche motivo in Visual Studio 2013 è necessario riavviare vs per poter applicare le modifiche in web.config.