0
votes

Pourquoi AJAX appelle à l'action du contrôleur n'envoie qu'une seule valeur?

J'essaie d'envoyer deux paramètres à mon action du contrôleur à l'aide de la méthode Ajax de JQuery. Mais le contrôleur affiche la valeur pour le premier paramètre dupliqué au deuxième paramètre. Pourquoi cela arrive-t-il?

AJAX Call: P>

[HttpPost]
public ActionResult SendTestEmail(string TestEmail, string NotificationEmail)
{
    string emailAddress = String.IsNullOrEmpty(TestEmail) ? SysNotificationEmail : TestEmail;
      ...
     return View();
}


10 commentaires

Pouvez-vous appeler le point final avec une sérialisation réussie sans utiliser JSON.Stringify?


Essayez de supprimer le contenu du contenu: 'Application / JSON', j'ai eu des problèmes avec cela avant


Oui, ce que Rav a dit, mais essayez de supprimer tous les attributs AJAX non essentiels un à la fois. Seuls "URL", "Type", "Data" et "DataType" doivent être nécessaires. Le type de données pourrait même être déduit, si je me rappelle. Mais enlevez chacun par un.


Supprimer ProcessData. Si vous souhaitez envoyer un DOMDOCUMUME, ou d'autres données non traitées, définissez cette option uniquement sur FALSE.


@Rossbush non, ça m'enverse des valeurs null si je ne l'utilise pas,


@Rav, essayé déjà, a déjà eu le même problème après cela,


@Hastatamang, essayé qu'il n'a pas fonctionné.


@Sourabh ça marche pour moi correctement, j'ai posté votre code et ça marche bien. Y a-t-il une sorte de liaison modèle ou de routé spécial? Essayez de créer une nouvelle application MVC et d'un contrôleur de vanille avec le JavaScript exact que vous avez dans votre exemple.


@Sourabh Une chose que j'ai remarquée, c'est que votre renvoi de la vue? Si vous retournez du JSON? Est-ce une copie de votre code?


@Rav Oui, c'est à l'intérieur d'un bloc de rasoir. Mais je ne vois pas que cela devrait être question .. Je pourrais me tromper. Cela ne change pas son comportement, quel que soit le type de retour que j'utilise. J'ai essayé avec Json aussi.


4 Réponses :


0
votes

Veuillez essayer le code ci-dessous:

$(document).on('click', '#btnSendTestEmail', function(e){
  e.preventDefault();
  $.post('/SystemVariables/SendTestEmail', 
      {
        TestEmail: 'TestEmailAddress',
        NotificationEmail: 'NotificationAddresss'
      })
   .done(function(response){
      console.log(response);

    })
   .fail(function(xhr, exception){
      console.log(response);

    })

})


2 commentaires

Nope Les deux paramètres montrent toujours «testemailaddress» comme valeur. Tbh je suis complètement confus, pourquoi montrent-il les deux valeurs identiques?


Son code ASP MVC, vous pouvez voir la méthode où je sais que l'appel est au-dessus de SendTestemail (String Testemail, notification de chaîne)



1
votes

Créer un modèle, il y a donc quelque chose à lier à: xxx pré>

puis accepter le modèle dans le contrôleur, il connaîtra ensuite la structure à lier à: p>

    [HttpPost]
    public ActionResult SendTestEmail(EmailModel model)
    {
        string emailAddress = model.TestEmail;
        string test = model.NotificationEmail;
        return View();
    }


0 commentaires

1
votes

Lorsque vous postez des données sur une action dans ASP.NET MVC, vous devez avoir un seul modèle à lier code> dans l'action.

Ceci est le comportement par défaut du DefaultModelbinder . p>

Vous devez créer une classe avec ces propriétés et conserver un seul paramètre dans l'action. P>

public ActionResult SendTestEmail(YourModel model)


0 commentaires

0
votes

Avez-vous essayé d'utiliser un objet JSON pour envoyer les données? serait quelque chose comme ceci: xxx


0 commentaires