2010-10-22 16 views
0

J'ai créé un contrôle serveur personnalisé dans ASP.NET pour rendre une case à cocher standard et un champ caché comme celui-ci:Puis-je récupérer la valeur d'une entrée standard dans ASP.NET?

public class CheckAllBox : WebControl 
{ 

    private string checkboxClientID; 

    protected override void OnInit(EventArgs e) 
    { 
     checkboxClientID = String.Format("{0}{1}chbCheckAll", base.ClientID, base.ClientIDSeparator); 
     base.OnInit(e); 
    } 

    protected override void Render(HtmlTextWriter writer) 
    { 
     //Render checkbox 
     writer.AddAttribute(HtmlTextWriterAttribute.Id, checkboxClientID); 
     writer.AddAttribute(HtmlTextWriterAttribute.Name, checkboxClientID); 
     writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox"); 
     writer.AddAttribute(HtmlTextWriterAttribute.Value, Values); 
     writer.RenderBeginTag(HtmlTextWriterTag.Input); 
     writer.RenderEndTag(); 

     //Render hidden field 
     writer.AddAttribute(HtmlTextWriterAttribute.Id, String.Format("{0}{1}hdnExcludeValues", base.ClientID, base.ClientIDSeparator)); 
     writer.AddAttribute(HtmlTextWriterAttribute.Name, String.Format("{0}{1}hdnExcludeValues", base.ClientID, base.ClientIDSeparator)); 
     writer.AddAttribute(HtmlTextWriterAttribute.Type, "hidden"); 
     writer.AddAttribute(HtmlTextWriterAttribute.Value, ExcludeValues.ToString()); 
     writer.RenderBeginTag(HtmlTextWriterTag.Input); 
     writer.RenderEndTag(); 
    } 
} 

Maintenant, je veux récupérer la valeur du champ caché et la case à cocher quand il est posté en arrière - est-ce possible avec le code HTML standard que j'ai rendu?

J'ai déjà écrit jQuery qui fonctionne avec ce balisage, mais il nécessite une case à cocher html standard avec une valeur - pas le type de case à cocher rendu par ASP.NET.

S'il n'est pas possible de récupérer la valeur à partir d'entrées html standard, dois-je réécrire cela comme un contrôle composite, ou y at-il un autre truc?

Répondre

2

La propriété Form de l'objet Request contient les valeurs de tous les éléments de formulaire pour la demande en cours.

string key = ...; // "name" attribute of the form element 
string val = Request.Form[key]; 
+0

Vous avez absolument raison, mais ce qui me poussait c'était que ma valeur de case à cocher était nulle. Mais bien sûr, la raison pour laquelle il était nul est que la valeur n'est pas affichée si la case n'est pas cochée. Doh .... maintenant j'ai juste besoin d'un autre champ caché .... – Colin