Я недавно взломал веб-формы, чтобы выяснить, возможно ли использовать с ним один из моих (маршрутизационных) проектов. Пока что это были только неприятности, но я почти дошел до того, что это "работает"
Я сделал страницу "Test.aspx". На Global.asax я сделал так, чтобы он подавался на /test
вместо /Test.aspx
. Это работает полностью. Он происходит от моего пользовательского класса страниц. Пользовательский класс находит HtmlForms на странице и переписывает их атрибут Action с правильным значением: /test
.
Теперь я попал в большую кирпичную стену под названием Viewstate и ASP.Net events. Я добавил кнопку в Test.aspx с обработчиком OnClick. Я могу нажать на кнопку, и страница будет постбэк и тому подобное, но событие OnClick не произойдет. Я не понимаю, как простое изменение URL-адреса может нарушить ViewState, как это, так как у меня не было впечатления, что ViewState будет отслеживать такие вещи. Кроме того, IsPostback будет ложным, хотя HttpMethod == true. Это не имеет никакого смысла для меня.
Кроме того, я отключил EventValidation, потому что полагал, что это будет проблемой, но эта проблема сохраняется.
Как сделать так, чтобы viewstate и postback работали как обычно при перезаписи URL?
(Обратите внимание, что моя форма переписывания URL-адресов выполняет все внутренние операции, никогда не отправляется HTTP-перенаправление пользователю)