Я создал составной элемент управления с примерами деталей следующим образом.По сути, при первой загрузке страницы элемент управления устанавливает переменную состояния просмотра, и проблема заключается в том, что при обратной публикации (при нажатии кнопки) переменная ViewState имеет значение null.Я много исследовал, и я не могу найти решение.Я проверил все статьи, рекомендованные Microsoft, а также от других разработчиков.Этот подход, кажется, работает для всех, и я не могу понять, что я делаю неправильно.Если кто-то может помочь, я был бы очень признателен.
PS: Этот код может не работать, поскольку он только для иллюстративных целей.но это именно то, что я делаю в своем коде.
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!!!!!!
}
}