2010-03-08 6 views
1

J'ai une application web qui devra accéder au code derrière les méthodes ainsi que les méthodes javascript. Pour cette implémentation particulière, peu importe l'ordre dans lequel ils sont appelés du point de vue du flux de programmes.Appeler javascript à partir d'un code derrière vs appeler un code derrière javascript

Je cherche à savoir quand il serait approprié d'utiliser un code derrière pour appeler javascript et quand il serait approprié d'appeler javascript à partir d'un code derrière. Y a-t-il des ramifications à faire d'une façon ou d'une autre dont je devrais être au courant avant d'aller de l'avant avec une mise en œuvre?

Existe-t-il une meilleure façon de le faire ou est-elle très spécifique à l'implémentation actuelle?

Répondre

1

Parlons d'appeler le code côté serveur de JavaScript. Ceci est effectué en utilisant Ajax. Vous pouvez appeler des méthodes Web dans les services Web et vous pouvez également appeler Méthodes de page si vous les décorez avec des attributs spéciaux.

La principale raison de l'appel du côté serveur de js est l'utilisation de la fonctionnalité ajax. L'appel de js à partir du côté serveur est essentiellement lorsque vous injectez du code javascript dans la page, puis le code client est appelé pour une action.

MISE À JOUR:

Il pourrait y avoir d'autres raisons aussi où vous devez appeler côté serveur de javascript cela peut inclure la soumission manuelle à l'aide du formulaire document.form.submit(). Mais je dirais que la plupart du temps 90% + vous appelez le code du côté serveur pour effectuer une action de manière asynchrone en utilisant ajax. Pour le deuxième scénario, un exemple courant peut être lorsque vous souhaitez ajouter une boîte de confirmation dans les boutons contenus dans le contrôle gridview. Dans ce scénario, vous allez ajouter du code dans l'événement databound du contrôle gridview et ajouter du code javascript aux boutons contenus dans le gridview. Enfin, lorsque le gridview est rendu, les boutons à l'intérieur de la gridview seront javascript attachés à eux et lorsque l'utilisateur clique sur le bouton, il apparaît la boîte de confirmation. Un autre scénario peut être lorsque vous souhaitez ouvrir une nouvelle fenêtre contextuelle après la publication.

+0

Diriez-vous que l'appel du code côté serveur de Javascript est utilisé lorsque vous désirez une sorte de fonctionnalité Ajax alors? Est-ce la seule fois ou y a-t-il d'autres considérations? En outre, pourriez-vous élaborer sur votre discussion du deuxième scénario? Je comprends le comment, mais quand/pourquoi voulez-vous injecter javascript dans la page pour une invocation plus tard? – mwright

+0

J'ai modifié ma réponse! – azamsharp

0

Vous voulez dire "code behind" comme dans le code du serveur, n'est-ce pas? Le code JavaScript ne peut pas appeler le code du serveur. En règle générale, votre code serveur génère des variables JS, des fonctions JS ou tout autre code client qui ne peut pas être déterminé au moment de la compilation.

EDIT: Pour clarifier, le code JS peut certainement POST au serveur via Ajax, qui est en effet "code serveur appelant". Je pensais que vous demandiez d'appeler directement les fonctions code-behind de JS car elles sont "sur la même page" dans Visual Studio, ce qui n'est pas possible à moins d'exposer les fonctions comme Ajax et d'utiliser un mécanisme Ajax côté client. leur.

Pour répondre au mieux à votre question, des cas d'utilisation spécifiques vous seraient utiles. Il n'y a pas de raison générale ou fausse de le faire - cela dépend de ce que vous essayez d'accomplir.

+0

Une installation en cours de test, qui a été testée pour fonctionner, est qu'un événement onclick exécute une fonction javascript qui appelle ensuite un WebMethod dans le codebehind de cette page. Peut-être que je ne comprends pas ce que vous voulez dire avec ce post, mais il semble être une option? – mwright

+0

En fait, il est possible que le code JavaScript effectue un rappel sur le serveur. Une façon consiste à utiliser l'interface ICallBackEventHandler (http://msdn.microsoft.com/en-us/library/system.web.ui.icallbackeventhandler.aspx) –

+0

Oui, vous pouvez certainement exécuter des publications sur le serveur à partir du code JS en utilisant n'importe quel nombre de méthodologies Ajax. Ce n'est pas la même chose que "appeler le code page-derrière de JS" (ce qui n'est pas possible en soi) - vous devez exposer les méthodes spécifiquement comme des méthodes Ajax sur le serveur, ou utiliser les fonctionnalités du framework construites à cet effet. mentionné par @Tim Goodman. –

Questions connexes