2009-11-10 5 views
1

J'ai créé un contrôle personnalisé à l'aide d'asp.net 2.0. Le contrôle contient une zone de texte txtDate. J'ai également créé un fichier javascript DateMask.js qui contient une fonction maskDate(). J'ai joint le maskDate() avec la zone de texte en utilisant -Obtention du javascript coté serveur côté client

txtDate.Attributes.Add ("onkeypress", "maskDate()");

J'ai également enregistré le script en utilisant ClientScript.RegisterStartupScript.

Lorsque j'exécute la page aspx contenant mon contrôle personnalisé, elle génère une erreur de script indiquant que maskDate() est indéfini.

Quelqu'un pourrait-il me dire quel est exactement le problème?

Nous vous remercions de votre coopération.

+0

Vous n'avez pas mentionné comment vous incluez 'DateMask.js'. –

+0

Où vous avez défini la fonction maskDate()? – Himadri

+0

En règle générale, lorsque vous générez du code de forme de code (dans ce cas JS de n'importe quelle langue que vous utilisez dans votre ASP.NET) - la façon la plus simple de déboguer est généralement de commencer à la fin et de revenir en arrière. À quoi ressemble la page générée? La fonction est-elle définie dans la page? Est-ce défini dans le temps? L'attribut onkeypress est-il correctement généré? – Quentin

Répondre

1

Une façon de le faire serait de placer un contrôle littéral au-dessus de votre zone de texte, et affecter le script dans le code derrière:

literal1.Text = "<script>function maskDate() {...}</script>"; 

L'avantage à cela, est que vous auriez pas besoin avoir à référencer le fichier de script avec des chemins relatifs difficiles en fonction de l'endroit où votre commande usercontrol est utilisée.

+0

Merci Josh! C'est une bonne idée. – IrfanRaza

1

Assurez-vous que vous n'avez pas oublié <form runat="server" ID="Form1"></form> à la fin de la balise <head>!

Comme vous pouvez le lire dans Using JavaScript Along with ASP.NET 2.0 sous "Différence entre Page.ClientScript.RegisterStartupScript et Page.ClientScript.RegisterClientScriptBloc", ils dépendent de l'emplacement de la balise de formulaire.

Nous avons montré deux méthodes différentes pour placer des fonctions JavaScript sur une page si ce ASP.NET est la différence ? La principale différence est que la méthode RegisterStartupScript place le JavaScript en bas de la page ASP.NET juste avant l'élément de fermeture . La méthode RegisterClientScriptBlock place le JavaScript directement après l'élément d'ouverture dans la page . Alors, quelle différence fait ce ? Cela peut faire beaucoup de différence, comme nous le verrons.

+0

Je sais que ASP.NET peut être bizarre - mais cela réglerait-il vraiment le problème des formes qui ne sont pas autorisées à l'intérieur de l'élément head? – Quentin

+0

La forme peut aussi bien être dans le corps - pas nécessairement dans la tête ... – Dror

+0

Merci Dror! Vous avez fourni une information si utile. – IrfanRaza

Questions connexes