2009-03-16 6 views
4

Je tente de construire une extension HtmlHelper dans ASP.NET MVC RC2. Ce code a bien fonctionné dans Preview 5, mais ne fonctionne plus dans RC2 et j'essaie de comprendre pourquoi. Voici le code:Accès aux méthodes HtmlHelper dans la méthode d'extension HtmlHelper - ASP.NET MVC RC2

public static string EmptyDropDownList(this HtmlHelper htmlHelper, string name, object htmlAttributes) 
{ 
    return htmlHelper.DropDownList(name, new SelectList(new string[0]), htmlAttributes); 
} 

Le problème est que je ne peux pas accéder à toutes les méthodes sur HtmlHelper à partir de la méthode d'extension. Ainsi, htmlHelper.DropDownList est introuvable.

Des suggestions?

Répondre

11

Vous devez inclure l'espace de noms System.Web.Mvc.Html car la plupart des méthodes HtmlHelper sont en réalité des extensions définies dans les classes de cet espace de noms.

Vous pouvez trouver le RC1 (et, vraisemblablement, bientôt le code source RC2, aussi) à www.codeplex.com/aspnet. Cliquez sur l'onglet du code source et naviguez jusqu'à l'arborescence du code source MVC.

+0

Pour MVC3, à l'aide de System.Web.Mvc; est l'espace de noms que j'ai utilisé pour les méthodes d'extensions pour Html.LaborFor System.Web.Mvc.Html est déjà dans le fichier web.config interne vraiment aucun sens dans l'utilisation lors de la modification d'une aide, il suffit d'utiliser System.Web.Mvc; et configurez votre web.config pour être "conscient" de votre espace de noms avec la méthode d'extension, voir donc ma réponse ci-dessous. –

0

Deux choix:

a. Ajouter à la page avec "Using" ainsi avec la page de vue de rasoir (mvc 3 et mvc 4) par exemple.

@using UrWeb.Helpers 

OU

b. Ajoutez à la section d'espaces de noms web.config par exemple.

<add namespace="UrWeb.Helpers"/> 
Questions connexes