2008-11-19 4 views
4

J'essaie d'utiliser des méthodes d'extension que j'utilise pour appliquer une mise en forme cohérente à DateTime et Int32 - qui fonctionne parfaitement bien, mais j'ai des problèmes de liaison de données.Utilisation de méthodes d'extension dans le contexte de liaison de données en ligne

je reçois:

'System.DateTime' does not contain a definition for 'ToCustomShortDate' 

pour

<%# ((ProductionDetails)Container.DataItem).StartDate.ToCustomShortDate() %> 

(dans un TemplateField d'un gridview contenu sur un usercontrol)

Même quand je suis y compris l'espace de noms que la méthode d'extension est défini en haut de la commande usager:

<%@ import namespace="MyAssembly.Formatting" %> 

Est-ce que quelqu'un d'autre a rencontré cela et est-il possible de le résoudre?

EDIT: Mon erreur, ci-dessus devrait être:

<%@ import namespace="MyNamespace.Formatting" %> 

ie. Je ne suis pas référence de manière incorrecte l'espace de noms (œuvres vertabim dans le code derrière)

Répondre

2

Trouvé le problème! J'incluais l'espace de noms comme je le pensais - mais le vrai problème était que l'application incluait seulement les assemblages .NET 3.5 et ne pas être compilé en utilisant le compilateur 3.5, il manquait des entrées de web.config que j'ai réalisé quand j'ai créé un projet vide et essayé (avec succès) là-bas!

Les messages d'erreur peuvent être si parfois trompeuses ...

+0

J'ai fini avec ce même problème. J'ai dû faire un clic droit sur le projet, aller dans l'onglet 'Application', et passer le runtime à .NET 4.0. Merci! – CodingWithSpike

0

Vous devez supprimer le nom de l'assemblage de l'espace de noms d'importation ...

Je suppose que votre méthode d'extension est situé dans un espace de noms appelé formatage.

namespace Formatting 
{ 

    public static class DateTimeExtender 
    { 
     public static string ToCustomShortDate(this DateTime date) 
     { 
      return date.ToString("dd MMM yyyy"); 
     } 
    } 

    public class ProductionDetails 
    { 
     public DateTime StartDate { get; set; }  
    } 
} 

Et dans la page ASPX ...

<%@ Import Namespace="Formatting" %> 
1

En ce qui concerne la méthode extenstion i ci-dessus doit mon implémenté namespace ressembler à ceci?

namespace MyNamespace.Formatting 
+0

Oui, il devrait - ils correspondent, il ne semble pas juste pour être obtenir ramassé. –

Questions connexes