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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top