2010-07-17 10 views
0

JavaScript est utilisé lorsque l'on veut faire quelque chose du côté du client purement, ou veut envoyer quelque chose au serveur d'une manière que la publication ne gère pas. Mais dans Visual Studio 2008 contrôles ASP.NET C# j'ai vu que lorsque la page est affichée dans le navigateur, les contrôles, à savoir GridView, FormView, et LINKBUTTON (!) Montrent tous javascript:thing lorsque le curseur est plané sur eux . Pourquoi?

Le post-retour se produit toujours. Même le bouton de lien a cette chose JavaScript et chaque fois que vous cliquez dessus, le retour complet se produit.

La modification de label.text, etc. est également dans l'événement pageload!

  • alors pourquoi JavaScript? Pourquoi pas un simple bouton? Pourquoi linkbutton?

Répondre

0

ASP.NET est sans état. Autrement dit, à chaque fois qu'une page est demandée, le serveur construit réellement la page entière et contrôle son état & puis répond à la demande. Il restitue ensuite le balisage HTML approprié en réponse à la demande.

Pour tout contrôle, si la propriété autopostback est définie sur true, une page est postback sur le serveur si le contrôle provoque une publication (par exemple, en cliquant sur un bouton de lien).

Comment ASP.NET publie-t-il la page? Il le fait en utilisant une fonction javascript appelée _doPostBack(). La fonction est -

function __doPostBack(eventTarget, eventArgument) { 
if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
    theForm.__EVENTTARGET.value = eventTarget; 
    theForm.__EVENTARGUMENT.value = eventArgument; 
    theForm.submit(); 
} 

Cette fonction permet de renvoyer le formulaire au serveur. _doPostBack accepte les arguments - les événements de cible et d'événement en utilisant les variables cachées __EVENTTARGET et __EVENTARGUMENT. Cela indique au serveur quel contrôle a provoqué la publication et transmet également les arguments appropriés au serveur.

si vous avez ce code dans votre page ASPX -

Le balisage généré correspondant sera -

<a id="LinkButton1" href="javascript:__doPostBack('lnkButton','')">LinkButton</a> 

Alors, que vous cliquez sur un bouton de lien, la page est postback par la fonction __doPostBack(). Ensuite, la page est recréée au serveur avec l'état de contrôle respectif sur la page. Pour obtenir l'état de chaque contrôle sur la page, des mécanismes tels que viewstate sont utilisés. Une fois la page chargée, le serveur calcule et restitue le balisage de réponse.

1

Dans ce cas, les appels JavaScript pourrait être utilisé pour envoyer des données supplémentaires au serveur, par exemple enregistrer des données client pour la grille (comme la largeur des colonnes redimensionnées ou quelque chose comme ça). Les frameworks côté serveur utilisent cette approche pour permettre aux gars côté serveur de générer tout le code côté client. C'est une sorte de solutions rapides (en comparaison avec un JavaScript discret et bien organisé).