J'ai créé un contrôle composite avec les détails de l'échantillon comme suit. Fondamentalement, la première fois sur la page charger le contrôle définit une variable d'état d'affichage et le problème est que sur post-retour (lorsque le bouton est cliqué), la variable ViewState est nulle. J'ai fait des recherches approfondies et je ne suis pas en mesure de trouver une solution. J'ai vérifié tous les articles recommandés par Microsoft et également d'autres développeurs. Cette approche semble fonctionner pour tout le monde et je ne peux pas comprendre ce que je fais mal. Si quelqu'un peut aider, je l'apprécierais vraiment. PS: Ce code peut ne pas fonctionner car c'est seulement à des fins d'illustration. mais c'est exactement ce que je fais dans mon code.ViewState ["sample"] Variable ne retenant pas la valeur sur la publication dans un contrôle composite
Public class Test : CompositeControl
{
private Button btnTest = new Button();
public string TestViewState
{
get
{
string s = (string)ViewState["test"];
return (s == null) ? String.Empty : s;
}
set
{
ViewState["test"] = value;
}
}
private void set()
{
TestViewState = "test";
}
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
set();
}
protected override void RecreateChildControls()
{
EnsureChildControls();
}
protected override void CreateChildControls()
{
base.Controls.Clear();
btnTest.ID = "btnTest";
btnTest.Click += new EventHandler(btnSubmitTest_Click);
if (!ChildControlsCreated)
Controls.Add(btnTest);
base.CreateChildControls();
}
protected override void Render(HtmlTextWriter writer)
{
btnSumbit.Render(writer);
}
protected void btnSubmitTest_Click(object sender, EventArgs e)
{
string test = TestViewState; // Viewstate value is null here!!!!!!
}
}
J'ai oublié de mentionner que ce contrôle est appelé à partir d'un autre contrôle composite .. peut-être que les données de contrôle enfant ne sont pas conservées dans viewstate. – user479843