Quelqu'un peut-il fournir de bons exemples d'appels d'une fonction JavaScript à partir de CodeBehind et vice-versa?
c#
javascript
asp.net
ssmsnet
la source
la source
Réponses:
Vous pouvez essayer ceci:
la source
Page.ClientScript.RegisterClientScriptBlock
est nécessaire de consulter ce post pour plus d'informations . 2. Il peut être intéressant de mentionner que pour que MyFunction () fonctionne, MyFunction () doit être défini avant les balises de formulaire ou à l'intérieur de celles-ci, mais PAS après la balise de fin </form> (sinon, une erreur attendue Object sera se produire)ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "text", "openDep()", true);
travaux.this.GetType()
jette une erreur pour moi.asp:UpdatePanel
et écrit dans un événement de bouton. Ce qui provoque la publication de la page.C # à JavaScript: vous pouvez enregistrer un bloc de script à exécuter sur la page comme suit:
remplacez la
alert()
pièce par le nom de votre fonction.Pour appeler la méthode C # à partir de JavaScript, vous pouvez utiliser
ScriptManager
oujQuery
. J'utilise personnellementjQuery
. Vous devez décorer la méthode que vous souhaitez appeler à partir de JavaScript avec unWebMethod
attribut. Pour plus d'informations sur l'appel de la méthode C # (appeléePageMethod
) à partir de,jQuery
vous pouvez vous référer à l'article de Dave Ward .la source
Appel d'une fonction JavaScript à partir du code derrière
Étape 1 Ajoutez votre code Javascript
Étape 2 Ajouter 1 Gestionnaire de scripts dans votre Webform et Ajouter 1 bouton trop
Étape 3 Ajoutez ce code dans votre événement de clic de bouton
la source
ScriptManager
comme dans cette réponse, pasPage.ClientScript
comme dans d'autres réponses. Peut être lié auasp:UpdatePanel
commentaire sous la réponse acceptée.Vous ne pouvez pas faire cela directement. Dans les WebForms standard, JavaScript est interprété par le navigateur et C # par le serveur. Ce que vous pouvez faire pour appeler une méthode à partir d'un serveur à l'aide de JavaScript est.
WebMethod
commeattribute
dans les méthodes cibles.ScriptManager
paramètreEnablePageMethods
commetrue
.PageMethods
.Comme ça:
Étape 1
Étape 2: Ajout d'un
ScriptManager
sur lePage
Étape 3: Appel de la méthode à l'aide de JavaScript
Jetez un œil à ce lien.
Pour appeler une fonction JavaScript à partir du serveur, vous pouvez utiliser
RegisterStartupScript
:la source
GetProducts()
fonction est juste une fonction code-behind qui vivrait dans un contrôleur dans une application MVC, de sorte que les balises s'ajoutent à la fonction que vous souhaitez mettre dans un contrôleur que vous avez l'intention d'appeler à partir de JavaScript .Si vous devez envoyer une valeur en tant que paramètre.
la source
Une autre chose que vous pouvez faire est de créer une variable de session qui est définie dans le code derrière, puis de vérifier l'état de cette variable, puis d'exécuter votre javascript. La bonne chose est que cela vous permettra d'exécuter votre script là où vous le souhaitez au lieu d'avoir à déterminer si vous voulez qu'il s'exécute dans le DOM ou globalement.
Quelque chose comme ceci: Code derrière:
En javascript
la source
Vous ne pouvez pas. Codebehind s'exécute sur le serveur tandis que JavaScript s'exécute sur le client.
Cependant, vous pouvez ajouter
<script type="text/javascript">someFunction();</script>
à votre sortie et ainsi provoquer l'appel de la fonction JS lorsque le navigateur analyse votre balisage.la source
Vous pouvez utiliser littéralement:
la source
IIRC Code Behind est compilé côté serveur et javascript est interprété côté client. Cela signifie qu'il n'y a pas de lien direct entre les deux.
Ce que vous pouvez faire d'autre part, c'est faire communiquer le client et le serveur via un outil astucieux appelé AJAX. http://en.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML
la source
Essayez ceci dans Code Behind et cela fonctionnera à 100%
Écrivez cette ligne de code dans votre fichier Code Behind
Et voici la page de formulaire Web
la source
la source
Exemple de travail: _
Code derrière
Pièges possibles: -
CodeBehind="History.aspx.cs"
pointe vers la mauvaise pagela source
J'ai remarqué que beaucoup de réponses ici sont utilisées
ScriptManager.RegisterStartupScript
et si vous voulez le faire, ce n'est pas la bonne façon de le faire. La bonne façon est d'utiliserScriptManager.RegisterScriptBlock([my list of args here])
. La raison en est que vous ne devriez utiliser RegisterStartupScript que lorsque votre page se charge (d'où le nom RegisterStartupScript).Dans VB.NET:
en C #:
Bien sûr, j'espère qu'il va sans dire que vous devez remplacer la clé par votre identifiant de clé et que vous devriez probablement déplacer tout cela dans un sous / fonction / méthode et passer la clé et certainsJavascriptObject (si votre méthode javascript nécessite que votre argument soit un objet javascript).
Documents MSDN:
https://msdn.microsoft.com/en-us/library/bb338357(v=vs.110).aspx
la source
utiliser votre fonction suffit
la source
Voilà comment je l'ai fait.
Le balisage HTML montrant une étiquette et un contrôle de bouton est le suivant.
La fonction JavaScript est ici.
Le code derrière pour déclencher la fonction JavaScript est ici.
la source
cela fonctionne pour moi
la source
Comme je ne pouvais pas trouver une solution qui était derrière le code, ce qui inclut d'essayer le
ClientScript
etScriptManager
comme mutanic et Orlando Herrera a dit dans cette question (ils ont tous les deux échoué), je vais proposer une solution frontale qui utilise des clics de bouton à d'autres si ils sont dans la même position que moi. Cela a fonctionné pour moi:Balisage HTML:
JavaScript:
J'utilise simplement un bouton ASP.NET qui utilise la
OnClientClick
propriété, qui déclenche des fonctions de script côté client, c'est-à-dire JavaScript. Les éléments clés à noter ici sont les utilisations dureturn
mot - clé dans l'appel de fonction et dans la fonction elle-même. J'ai lu des documents qui n'utilisent pasreturn
mais que le bouton clique toujours pour fonctionner - cela n'a pas fonctionné pour moi. L'return false;
instruction dans la fonction spécifie qu'une publication ne doit PAS se produire. Vous pouvez également utiliser cette instruction dans laOnClientClick
propriété:OnClientClick="myFunction() return false;"
la source
J'ai utilisé ScriptManager dans Code Behind et cela a bien fonctionné.
Si vous utilisez UpdatePanel dans ASP Frontend. Ensuite, entrez le nom UpdatePanel et le 'nom de la fonction' définis avec des balises de script.
la source
Merci "Liko", ajoutez simplement un commentaire à sa réponse.
Ajout de guillemets simples (
'
) à la variable, sinon cela donnera un message d'erreur:la source
Vous ne pouvez pas appeler une fonction Javascript à partir de CodeBehind, car le fichier CodeBehind contient le code qui s'exécute côté serveur sur le serveur Web. Le code Javascript s'exécute dans le navigateur Web côté client.
la source
Vous pouvez exposer les méthodes C # sur les pages codebehind pour qu'elles puissent être appelées via JavaScript à l'aide de l' attribut ScriptMethod .
Vous ne pouvez pas appeler JavaScript à partir d'un CodeBehind - ce code existe uniquement sur le client.
la source