2009-09-23 5 views
3

J'essaie de déclencher un envoi de formulaire via jQuery et d'avoir un feu d'événement côté serveur particulier.Firing Server Side Event de jQuery - __EVENTARGUMENT N'existe pas

client Code Side:

$("input[name=__EVENTARGUMENT]").val("SomeArg"); 
form = $("body form"); 
form.submit(); 

serveur Code Side:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Page.IsPostBack) 
     { 
      if (Request["__EVENTARGUMENT"] == "SomeArg") 
      { 
       //do some stuff 
      } 
     } 
    } 

Le problème est, la "__EVENTARGUMENT" entrée cachée n'existe pas. J'ai découvert que si j'ajoute une liste déroulante de contrôle de serveur ASP.net avec autopostback = true, l'entrée cachée EVENTARGUMENT est créée. Existe-t-il un moyen plus simple d'avoir ASP.net pour créer ces entrées cachées, et me permettre d'obtenir leurs valeurs côté serveur sans ajouter de contrôles dont je n'ai pas vraiment besoin sur la page?

Répondre

2

Ajouter asp.net HiddenField control à la page

Mais vous aurez un problème qui est d'obtenir cet ID de contrôle, qui génère automatiquement as.net, vous pouvez résoudre cela en utilisant la propriété ClientID pour le champ caché comme this article mentions

+0

J'ai ajouté un contrôle 'test' HiddenField à la page. Le champ caché EVENTARGUMENT n'a pas été généré automatiquement. Je me méfie d'en créer un avec ce nom puisque le code de chargement javascript/page est en fait sur un contrôle utilisateur. Le contrôle utilisateur peut être placé sur des pages qui ont un champ masqué EVENTARGUMENT généré automatiquement ou des pages qui n'ont pas ce contrôle générées automatiquement. – KClough

+0

Pourquoi avez-vous besoin de cet EVENTARGUMENT spécial? –

+0

AH! Je n'ai pas réalisé que tous les champs de saisie nommés étaient accessibles via l'objet Request. MERCI! – KClough