Ajax et ASP.NET/C# passage de paramètre

Messages postés
13
Date d'inscription
samedi 23 janvier 2010
Statut
Membre
Dernière intervention
7 août 2012
- - Dernière réponse : yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
- 30 déc. 2014 à 17:53
Bonjour à tous !

Je rencontre actuellement un problème avec Ajax et le C#.
J'aimerai pouvoir passer un paramètre du JS au C# lors de l'appel de la fonction du code behind par le JS. La raison est très simple, l'action à faire dans la BD par le code behind dépend du bouton cliqué par l'utilisateur.

Je vous mets un peu de code pour que vous visualisiez..

La fonction JS qui appel le code behind :
function AddFavoris() {
 
    var response;
    // J'aimerais passer un paramètre lors de cet appel...
    AjaxLib.AddFavoris(AddFavoris_CallBack);
}


La fonction du code behind :
[Ajax.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
        public string AddFavoris()
        {
 
            Site1.open_connection();
            try
            {
                String strRequete = "";
                if (estAdmin())
                {
                    Utilisateur collaborateur = new Utilisateur(WebFormImputation.collaborateurSelected);
                    strRequete = "INSERT INTO TacheFavorite VALUES('" + collaborateur.getIdUtilisateur() + "',8)";
                }
                else
                {
                    strRequete = "INSERT INTO TacheFavorite VALUES('" + Site1.getUser().getIdUtilisateur() + "',8)";
                }
 
                SqlCommand cmd = new SqlCommand(strRequete, Site1.cnn);
                cmd.ExecuteNonQuery();
 
 
                return "ok";
            }
            catch
            {
                return "Error";
            }
        }


La fonction JS de call_back qui récupère les retours du code behind exécuté :
function AddFavoris_CallBack(response) {
 
    if (response == 'Error') {
        alert("An Error occured in accessing the DataBase !!!");
    }
    else {
        alert("Tâche ajoutée aux favoris avec succès !");
    }
    document.getElementById("ContentPlaceHolder1_idTacheFavoris").value = "";
}
Afficher la suite 

7 réponses

Messages postés
13
Date d'inscription
samedi 23 janvier 2010
Statut
Membre
Dernière intervention
7 août 2012
0
Merci
up
Commenter la réponse de cs_eddynamique
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
0
Merci
Bonjour,
Regardez dans votre librairie 'Ajaxlib'...
Sinon faîtes votre requête ajax à la main en passant tout simplement les paramètres dans l'url...


Megafan

Développeur de http://www.o10c.eu (Lien)


La nouvelle référence en matière de jeu de stratégie spatiale.
Commenter la réponse de cs_Megafan
Messages postés
13
Date d'inscription
samedi 23 janvier 2010
Statut
Membre
Dernière intervention
7 août 2012
0
Merci
Bonjour,
Merci de vous interessez à ce sujet..

La librairie AjaxLib est en réalité ma propre librairie qui regroupe les fonctions qui utilisent Ajax.

Sinon pouvez vous être plus clair sur la requête Ajax "à la main" ? Je vois bien comment faire en PHP étant donnée qu'on appelle un script à partir de son URL, mais dans le cas présent en C#, je fais appel directement à une méthode d'une classe C#, sans me soucier de son adresse, je ne vois donc pas comment je pourrais passer mon paramètre via l'URL...
Commenter la réponse de cs_eddynamique
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
0
Merci
Re,
Effectivement j'ai un peu de mal à comprendre comment tourne votre solution.
Pourquoi ne pas passer votre paramètre à la page c# via la requête ajax ?



Megafan

Développeur de http://www.o10c.eu (Lien)


La nouvelle référence en matière de jeu de stratégie spatiale.
Commenter la réponse de cs_Megafan
Messages postés
13
Date d'inscription
samedi 23 janvier 2010
Statut
Membre
Dernière intervention
7 août 2012
0
Merci
Bonjour,

Lors de ma requete Ajax, je n'utilise pas d'URL pour appeler le code behind à éxecuter.
En effet j'appelle directement la méthode à éxecuter :
AjaxLib.AddFavoris(AddFavoris_CallBack);


Ma question est justement : comment passé un paramètre lors de l'appel de cette méthode ?
Commenter la réponse de cs_eddynamique
0
Merci
function AddFavoris() {

var response;
// J'aimerais passer un paramètre lors de cet appel...
AjaxLib.AddFavoris(monParam, AddFavoris_CallBack);
}

[Ajax.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public string AddFavoris(string monParam)
{

Site1.open_connection();
try
{
String strRequete = "";
if (estAdmin())
{
Utilisateur collaborateur = new Utilisateur(WebFormImputation.collaborateurSelected);
strRequete = "INSERT INTO TacheFavorite VALUES('" + collaborateur.getIdUtilisateur() + "',8)";
}
else
{
strRequete = "INSERT INTO TacheFavorite VALUES('" + Site1.getUser().getIdUtilisateur() + "',8)";
}

SqlCommand cmd = new SqlCommand(strRequete, Site1.cnn);
cmd.ExecuteNonQuery();


return "ok";
}
catch
{
return "Error";
}
}
Commenter la réponse de adri
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
17
0
Merci
Salut,

Je ne connais pas cette façon d'utiliser Ajax, mais en aspnet (normal), il suffirait de passer par un HiddenField

<asp:HiddenField ID="hidParam1" value="" />


... De le remplir coté JS avant l'appel ajax

function AddFavoris() {
   $get("<%=hidParam1.ClientID %>").value = "toto";
    // ...
}


Et de récupérer cette valeur dans le C#

[Ajax.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public string AddFavoris()
{
    string sParam1 = hidParam1.Value;
    //...
}


bye...
Commenter la réponse de yann_lo_san