Response.Redirect(Request.Url.AbsoluteUri) и MultiView1.SetActiveView

У меня есть форма для отправки. когда пользователь нажимает кнопку "Сохранить", он должен установить активный просмотр multiview1 в view2. Я добавил Response.Redirect(Request.Url.AbsoluteUri); запретить пользователям нажимать кнопку F5 и отправлять форму снова и снова, но это приводит к тому, что multiview1 не устанавливает активное представление для view2, а после отправки формы все еще показывает view1

protected void btnSubmitAd_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
        {

        Ads ad = new Ads
            {
                Title = txtAdTitle.Text,
                Dec = txtAdText.Text,
                Name = txtName.Text,
                Email = txtEmail.Text

            };

            context.Ads.Add(ad);
            context.SaveChanges();

            MultiView1.SetActiveView(View2);
            Response.Redirect(Request.Url.AbsoluteUri);

    }
}

и это мое событие загрузки страницы:

protected void Page_Load(object sender, EventArgs e)
{
        if (!Page.IsPostBack) {
            MultiView1.SetActiveView(View1);
        }

}

1 ответ

Решение

Приведенный ниже код всегда устанавливает вид на View1.

  if (!Page.IsPostBack) 
  {
      MultiView1.SetActiveView(View1);
  }

Если вы хотите установить ActiveView к определенному представлению после перенаправления, то вы где-то установили свою информацию представления. лайк Session или же QueryString

Код строки запроса будет выглядеть так:

protected void btnSubmitAd_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {

        Ads ad = new Ads
        {
            Title = txtAdTitle.Text,
            Dec = txtAdText.Text,
            Name = txtName.Text,
            Email = txtEmail.Text

        };

        context.Ads.Add(ad);
        context.SaveChanges();

        //MultiView1.SetActiveView(View2);  No need for that as it will be lost after redirect... 

        //Append your ActiveView information in query string with Request.Url.AbsoluteUri
        Response.Redirect(Request.Url.AbsoluteUri + "?activeView=View2");// 

     }
}

И на PageLoad

protected void Page_Load(object sender, EventArgs e)
{
        if (!Page.IsPostBack) 
        {
            string activeView = Request.QueryString["activeView"]
            if(!string.IsNullOrEmpty(activeView) && activeView == "View2")
                MultiView1.SetActiveView(View2);
            else 
                MultiView1.SetActiveView(View1);
        }
}
Другие вопросы по тегам