2010-07-29 27 views
0

J'ai un composant qui détermine une valeur sur un événement de publication.Définir une valeur de champ masqué après la publication

protected void Button_Click(object s, EventArgs e) 
{ 
    HiddenField.Value = 5; 
} 

Il y a plus impliqué dans la valeur bien sûr, mais HiddenField est un aspic: contrôle HiddenField avec jeu runat = serveur. J'ai dans mon javascript:

var id = $("#<%= HiddenField.ClientID %>").val(); 

Le code javascript est défini pour être exécuté seulement après que le postback a eu lieu (un événement click client différent) dans le but de passer la valeur du champ caché via QueryString vers une autre URL (puisque je ne peux pas faire une redirection de réponse sur les postbacks et le client le veut dans une page différente de toute façon).

J'ai essayé d'ajouter:

ScriptManager.RegisterHiddenField(HiddenField, "Value", string.Empty); 

à une section Page.IsPostBack de code, mais l'ID est toujours pas défini lorsque le javascript est exécuté.

+0

Êtes-vous sûr que vous n'êtes pas votre valeur quelque part remplaçant? Est-ce que enableviewstate est activé? Je regarderais d'abord le côté serveur. – Peter

Répondre

0

Vous pouvez ajouter une variable js globale sur votre page principale, puis définir cette variable au lieu du champ masqué.

Page.aspx

<script> 
    var id=''; 
</script> 

Page.aspx.cs

protected void btn_Click(object sender, EventArgs e) 
{ 
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "updateJavaScriptId", "id='5';", true); 
} 
0

Here est un problème similaire. Peut-être que vous pouvez l'utiliser pour modifier ce que vous faites.

Avez-vous besoin d'accéder à l'ID client comme ça? Vous devriez être en mesure de définir l'ID du contrôle avec un petit problème tant qu'il n'est pas dans un répéteur ou quelque chose. Cela pourrait simplifier ce que vous essayez de faire.

Dans l'exemple, ils utilisent getElementById pour obtenir le champ masqué et simplement transmettre l'ID du champ HiddenField.

+0

Ce n'est pas que je n'accède pas à la propriété value du champ caché. C'est que le champ caché n'a aucune valeur après la publication (ou avant d'ailleurs). Lorsque je fais une source de vue du code HTML après la publication, je m'attends à voir la valeur calculée dans le champ. – SpaceCowboy74

+0

Pouvez-vous mettre à jour votre question pour inclure la balise dans la page aspx afin que nous puissions regarder les attributs là-bas? De même, n'importe quel code dans le Page_Load() serait agréable à voir aussi. – kniemczak