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

cs_eddynamique Messages postés 13 Date d'inscription samedi 23 janvier 2010 Statut Membre Dernière intervention 7 août 2012 - 8 mars 2012 à 10:13
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 = "";
}

7 réponses

cs_eddynamique Messages postés 13 Date d'inscription samedi 23 janvier 2010 Statut Membre Dernière intervention 7 août 2012
9 mars 2012 à 08:46
up
0
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
10 mars 2012 à 20:07
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.
0
cs_eddynamique Messages postés 13 Date d'inscription samedi 23 janvier 2010 Statut Membre Dernière intervention 7 août 2012
12 mars 2012 à 08:47
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...
0
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
12 mars 2012 à 17:25
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_eddynamique Messages postés 13 Date d'inscription samedi 23 janvier 2010 Statut Membre Dernière intervention 7 août 2012
13 mars 2012 à 08:44
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 ?
0
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";
}
}
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
30 déc. 2014 à 17:53
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...
0
Rejoignez-nous