none
asp.net Межстраничная запись данных на веб-страницах RRS feed

  • Вопрос

  • Добрый день! Решился попробовать asp.net и тут же столкнулся с проблемой (возможно с ламерской). 
    На странице Default.aspx разместил всплывающее окошко с использованием AjaxControlToolkit и элемент управления Button

    <act:ModalPopupExtender ID="ModalPopupExtender_city" runat="server" 
            TargetControlID="LinkButton1" 
            PopupControlID="Panel1" 
            PopupDragHandleControlID="Panel1" 
            BackgroundCssClass="modalBackground" 
            DropShadow="true" /> 
    <asp:LinkButton ID="LinkButton1" runat="server" Text="Тест" Style="display: none" /> 

    Тут все прекрасно работает, теперь размещаю элемент управления Button в test.aspx и хочу по нажатию этой кнопки отобразить "ModalPopupExtender_city". 
    В Default.aspx.vb пишу открытое свойство CurrentCity 

    Public ReadOnly Property CurrentCity() As AjaxControlToolkit.ModalPopupExtender 
            Get 
                Return ModalPopupExtender_city 
            End Get 
        End Property 

    в Test.aspx задаю исходную страницу директивой @ PreviousPageType 

    <%@ PreviousPageType VirtualPath="~/Default.aspx" %>  

    в Test.aspx.vb обращаюсь к свойству CurrentCity 

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
      PreviousPage.CurrentCity.show() 
    End Sub 

    Все работает, но страниц будет много и размещать контрол с одной и той же логикой на каждой странице идиотизм, ведь существует master.page. Загвоздка вся в том, что использование "PreviousPageType" допустимо только на страницах .aspx кой master.page не является. Ну на дурака конечно же попробовал и получил ожидаемую ошибку "Неизвестная директива 'previouspagetype'" 
    Как это реализовать в master.page?

    8 июня 2013 г. 11:43

Ответы

  • Может и лучше, только если обработать событие нажатия button, вот так:

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim ChCity As String
      ChCity = "Rostov-On-Don"
      ModalPopupExtender_city.Hide()
      Response.Redirect("~/Rostov-On-Don/")
    End Sub

    То переменной ChCity по чему то не присваивается значения. Может я дундук но я сделал через сессию.

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Session("ChCity") = "Rostov-On-Don"
       Threading.Thread.Sleep(600)
       ModalPopupExtender_city.Hide()
       Response.Redirect("~/Rostov-On-Don/")
    End Sub

    • Помечено в качестве ответа YatajgaEditor 16 июня 2013 г. 20:01
    13 июня 2013 г. 17:21
  • Так потому, что значение локальной переменной не сохраняется между запросами, а в коллекции сессии да.
    16 июня 2013 г. 20:01
    Модератор

Все ответы

  • Час спустя понял что задал вопрос на который сам бы не стал отвечать "Зачем размещать контрол на default.aspx и вызывать его на masterpage???"
    Проще разместить контрол на masterpage и вызывать его на masterpage

    Прошу прощения за бред.

    Подскажите кто знает как отловить событие "click" контрола button
    8 июня 2013 г. 13:01
  • Как и у обычной кнопки, в коде CS файла мастер страницы. Или я что-то неверно понял?
    8 июня 2013 г. 13:25
    Модератор
  • Пишу на vb

    If Button1.Click Then
     ...
    End If

    Некомпилируется

    If Button1.OnClientClick Then
     ...
    End If

    Компилируется, но это совсем не то.

    8 июня 2013 г. 13:32
  • А почему не компилируестя превый метод, какая ошибка выдаётся? Если вам надо обрабатывать событие на сервере, то да, второй метод не годится.
    8 июня 2013 г. 13:48
    Модератор
  • К сожалению в VB.NET я не очень хорошо знаю, но насколько понял там вы пытаетесь использовать событие. А вам просто надо создать метод который подписывается и обрабатывает это событие. Примерно это у вас реализовано в верхнем коде, что показан на рисунке.

    10 июня 2013 г. 17:15
    Модератор
  • Мне нужно отловить событие нажатия button в функции, можно конечно через значения переменных, но это имхо изврат.
    11 июня 2013 г. 6:40
  • "Мне нужно отловить событие нажатия button в функции" - несовсем ясно, что вы имеете ввиду. Может всё же обработать это событие?

    11 июня 2013 г. 11:06
    Модератор
  • Может и лучше, только если обработать событие нажатия button, вот так:

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim ChCity As String
      ChCity = "Rostov-On-Don"
      ModalPopupExtender_city.Hide()
      Response.Redirect("~/Rostov-On-Don/")
    End Sub

    То переменной ChCity по чему то не присваивается значения. Может я дундук но я сделал через сессию.

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Session("ChCity") = "Rostov-On-Don"
       Threading.Thread.Sleep(600)
       ModalPopupExtender_city.Hide()
       Response.Redirect("~/Rostov-On-Don/")
    End Sub

    • Помечено в качестве ответа YatajgaEditor 16 июня 2013 г. 20:01
    13 июня 2013 г. 17:21
  • Так потому, что значение локальной переменной не сохраняется между запросами, а в коллекции сессии да.
    16 июня 2013 г. 20:01
    Модератор
  • Коротко и ясно, спасибо.
    17 июня 2013 г. 9:39