2008-10-15 4 views
0

J'ai un contrôle de serveur asp.net (avec l'asp: dans sa définition). Le bouton a été réglé pour faire un retour.Contrôle du serveur Asp.net même traitement de l'événement côté serveur/côté client

Du côté du serveur, je le sur gestionnaire d'événements, cliquez par exemple btnSave_click()

Du côté client, j'ai une fonction javascript être invoquée sur l'événement, cliquez par exemple btnSave.Attributes.Add ("onclick", "javascript: return CheckIsDirty();")

Je ne sais pas dans quel ordre ces deux seront exécutés. Parce que je veux d'abord du côté du client d'avertir de tous les champs de saisie de données qui ne sont pas encore remplis avant d'enregistrer réellement des données.

Une aide?

Répondre

2

Premier côté client, deuxième côté serveur.

Vous pouvez donc l'utiliser.

je également l'utiliser dans certains cas, comme:

close.Attributes["OnClick"] = "return confirm('Are you sure?')"; 

Dans ce cas, si l'utilisateur appuie No ', le gestionnaire d'événements côté serveur ne joue même pas un rôle.

+0

Merci, ça marche pour moi maintenant ... –

0

Je pense que vous avez besoin d'une bien meilleure compréhension de ce que cela signifie côté client et de ce que cela signifie côté serveur et comment ils se rapportent tous ensemble. J'ai vu de plus en plus de développeurs en faire le bazar.

Bien sûr, le côté client s'exécutera d'abord dans votre cas. En fait, il n'y a aucun moyen de l'exécuter après l'exécution du code du serveur (sauf si vous faites quelque chose manuellement). Je vais essayer de donner une brève explication:

Tout ce que vous avez dans votre serveur va générer du code HTML sur le client et l'utilisateur interagit toujours sur le client. Vous avez donc un bouton html sur lequel l'utilisateur clique. Ce que le navigateur fera est d'exécuter le javascript qui lui est associé ou si aucun javascript n'est spécifié et que le bouton est un bouton de soumission il soumettra le formulaire. Si vous vérifiez le code html généré, vous verrez que pour l'événement onclick vous aurez le script que vous avez ajouté suivi d'un script autogénéré qui enverra le formulaire au serveur. Le code côté serveur ne s'exécutera que si la page est soumise.

2

L'astuce ici est de définir cette variable globale "Page_IsValid" false si votre test échoue et que cela arrêtera la publication.

Lisez cette page http://msdn.microsoft.com/en-us/library/aa479045.aspx qui explique à la fois la validation côté serveur et la validation client. Il y a un bon exemple de code que vous pouvez utiliser.

1

La façon dont vous définissez votre événement JavaScript onClick l'empêchera réellement de s'afficher lorsque vous écraserez le gestionnaire d'événements ASP.NET. La bonne façon d'accomplir la validation que vous avez l'intention est de:

btnSave.Attributes.Add("onclick", "CheckIsDirty();" + GetPostBackEventReference(btnSave).ToString()); 

Notez que vous ajoutez le résultat de GetPostBackEventReference, de sorte que JavaScript vous appelez d'abord votre méthode CheckIsDirty(), puis appelez la méthode postback ASP.NET . En supposant que votre méthode renvoie true, le bouton sera publié. Si elle renvoie false, cela ne provoquera pas de retour.

Est-ce que cela ressemble à ce que vous essayez d'accomplir?