Вы можете использовать параметр строки запроса URL-адреса, чтобы получить необходимое значение при загрузке страницы, а затем установить соответствующие элементы управления. Что касается хранения значений, вы можете хранить все, что вам нужно, во ViewState или SessionState и искать их, когда вам нужно.
Пример ниже:
private void Page_Load()
{
if(Request.QueryString["switch"] !== null)
{
if(Request.QueryString["switch"].ToString()) == "on")
{
button.Visible = true;
ViewState["someval"] = hiddenVal.Text;
}
else
{
button.Visible = false;
}
}
}