MVC vue ne peuvent pas trouver ma méthode d'extension
J'ai créé une méthode d'extension:
namespace MyComp.Web.MVC.Html
{
public static class LinkExtensions
{
public static MvcHtmlString ActionImageLink(this HtmlHelper htmlHelper, string linkText, string imageSource, string actionName)
{
...
}
}
}
J'ai fait référence à l'assemblée à partir de mon application mvc, et j'ai essayé d'importer l'espace de noms de mon point de vue:
<%@ Import Namespace="MyComp.Web.Mvc.Html" %>
et j'ai également ajouté au fichier de configuration web:
<pages>
<controls>
...
</controls>
<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"/>
<add namespace="MyComp.Web.Mvc.Html"/>
</namespaces>
</pages>
À Mon avis, si j'essaie d'accéder à Html.ActionImageLink je reçois un message d'erreur indiquant que le Système.Web.Mvc.HtmlHelper ne contient pas une définition pour ActionImageLink acceptant un premier argument de type de Système.Web.Mvc.HtmlHelper. Je ne vois pas du tout de la ActionLink les méthodes d'extension pour le Système.Web.Mvc.HtmlHelper, uniquement pour le Système.Web.Mvc.HtmlHelper, alors, comment fonctionne le .net framework, et pas pour moi?
pouvez-vous coller votre code de vue?
non si je compile, VS me montre les erreurs avant même que je exécuter l'application.
Pourriez-vous essayer de désactiver MvcBuildView par l'édition de la mvc du projet .csproj fichier, puis exécuter le code. Je suis perplexe à ce depuis, il semble que vous avez tout fait correctement.
Ce que je veux obtenir au est parfois Visual Studio va vous dire qu'il ne peut pas trouver une certaine méthode (spécialement dans les vues) dans certains noms parce qu'il n'a pas encore reconnu le nouvel espace de noms. Parfois, la reconstruction du projet de correctifs. Aussi, êtes-vous sûr que le
web.config
vous avez ajouté à a été la principale de l'application web.config
pas le views web.config
?OriginalL'auteur Jeremy | 2010-01-21
Vous devez vous connecter pour publier un commentaire.
Notez la différence dans le cas de votre espace de noms lors de la déclaration et lors de l'importation.
Espaces de noms sont sensibles à la casse!
bonne prise, raté
OriginalL'auteur
Vous devez ajouter l'espace de noms dans le web.config mais dans celui à l'intérieur de la Dossier Vues
OriginalL'auteur
Essayez d'arrêter de Visual Studio et de l'ouverture de votre Solution de nouveau. Quand les choses commencent à agir étrange, parfois cette aide.
OriginalL'auteur
Ne le VS intellisense auto-complété votre méthode d'extension? Est-il auto-complété standard MVC aides méthodes? Si non, alors le point de vue complilation erreur s'est produite. Assurez-vous d'avoir le bon "Hérite de" valeur de l'attribut dans la balise Page au début de la vue. Si vous utilisez des points de vue fortement typée assurez-vous que la "forte de type" existe et compile.
Avez-vous définir la méthode d'extension dans le même projet, d'où la vue est-elle définie? Si non, vous devez ajouter la référence dans le projet mvc. Enfin vérifier si le montage avec la méthode d'extension (MyComp.Web.Mvc.Html.dll?) est dans le dossier Bin de l'application
Essayez d'ajouter la déclaration d'espace de noms pour les pages/espaces de noms section du site web.fichier de configuration placé dans votre dossier Vues dans le projet MVC (pas le principal projet web.fichier de config).
OriginalL'auteur
De fermer et de rouvrir Visual Studio a fait le tour!!
OriginalL'auteur
L'une des raisons peut-être vous êtes de retour d'une MvcHtmlString et non une chaîne.
Inclure l'espace de noms de la classe MvcHtmlString. Voir si ça aide.
La valeur de retour de la fonction n'a rien à faire avec elle.
J'ai essayé le code ci-dessus à partir de Jeremy, il fonctionne très bien pour moi. Ses bizarre, que sa ne fonctionne pas pour Jeremy.
OriginalL'auteur