Хорошо, это немного другой сценарий. Думаю, мне бы в любом случае пришлось подумать о том, чтобы сделать это с MVC, если бы мы на самом деле использовали MVC ... но сейчас мы этого не делаем.
Итак, у меня есть страница .aspx. На этой странице .aspx находится пользовательский элемент управления (.ascx). И в этом пользовательском элементе управления есть пользовательский элемент управления (.cs).
Таможенный элемент управления имеет повторитель. Итак, я показываю список элементов в этом .aspx через пользовательский элемент управления .ascx. Для каждого элемента в повторителе есть кнопка. Это просто гиперссылка, просто обычная на моей странице
Когда вы нажимаете эту кнопку, она перенаправляется на любую страницу, на которой вы находитесь. Поскольку пользовательский элемент управления никогда не знает, какая у вас родительская страница .aspx, я делаю перенаправление на собственную .aspx, выполняя Response.Redirect (Request.Path). Таким образом, он всегда перенаправляет к тому, что .aspx использует этот пользовательский элемент управления и пользовательский элемент управления.
Так что после того, как он перенаправляет себя, я проверяю строку запроса в page_load того, что использует .aspx. Если значение равно true, тогда я обрабатываю его так, как хочет .aspx. В этом случае, когда это правда, я вызываю метод в коде моего .aspx, который обрабатывает действие для кнопки. Например, допустим, что кнопка «Добавить в корзину», ASPX обрабатывает это действие и вызывает метод AddToCart в .aspx.cs.
Я не использую элемент управления ASP.NET для фактической гиперссылки и кнопки, потому что мне это просто не нужно, и в моем конкретном случае я использую пользовательский элемент управления и пользовательский элемент управления сервером. В этом случае у меня возникла проблема, когда я не хотел использовать элемент управления ASP.NET ... Я забыл, почему, но суть в том, что нет, это то, что есть.
Итак, я пытаюсь выяснить, как я могу применить здесь некоторый AJAX-вызов для вызова этого метода. Мне все еще нужно как-то перенаправить снова обратно на ту же страницу, что и я ... Я делаю перенаправление в этом методе после всей логики в конце. Я снова перенаправляю обратно на ту же страницу, потому что мне нужно, чтобы мои методы Page_Load в моем .aspx, а также в .ascx все еще запускались после завершения этого метода.
Так что я не уверен, с чего начать. Позвольте мне пройти через это еще раз:
- Пользовательский элемент управления имеет повторитель, а в повторителе каждый элемент имеет стандартную гиперссылку HTML (не элемент управления ASP.NET), которая оборачивает стандартный тег изображения (изображение - кнопка)
- Пользовательский элемент управления содержит пользовательский элемент управления
- Страница .aspx содержит пользовательский элемент управления
- Пользователь нажимает кнопку, и гиперссылка перенаправляет их на родительскую страницу .aspx, использующую этот пользовательский элемент управления ... поэтому он вызывает Response.Redirect (Request.Path)
- В коде этого .aspx в моей page_load я проверяю флаг строки запроса, чтобы увидеть, выполнил ли я это действие. Значит, пользователь нажал на эту кнопку. Например, один из параметров строки запроса - «AddItem», а другой параметр строки запроса - «itemID». Если MoveItem истина, то я запускаю метод с именем MoveItem (int itemID)
- Метод MoveItem называется
- Метод MoveItem снова перенаправляет обратно в тот же файл .aspx, используя Response.Redirect (Request.Path). Это делается для того, чтобы снова загружалась загрузка страницы, а также загрузка моей страницы .ascx. Потому что на обеих этих страницах я перепривязываю повторитель, чтобы показать последнее состояние списков. Я вызываю метод в моей .aspx page_load, который связывает сетку, а затем page_load в моем .ascx также вызывает другой метод, который связывает какой-то другой список