最近我一直在研究WebForms,看是否可以将我的某个(路由)项目与之结合使用。到目前为止,这一切都是麻烦重重,但我已经快到“可以用”的地步了。
我创建了一个名为“Test.aspx”的页面。在Global.asax中,我设置它在/test
处提供服务,而不是/Test.aspx
。这完全有效。它从我的自定义页面类继承。自定义类查找页面中的HtmlForms,并将其Action属性重写为正确的值:/test
。
现在我遇到了名为Viewstate和ASP.Net事件的巨大难题。我在Test.aspx中添加了一个带有OnClick处理程序的按钮。我可以点击该按钮,然后页面会进行PostBack等操作,但OnClick事件不会发生。我不理解一个简单的URL更改如何会破坏Viewstate,因为我没有印象Viewstate会跟踪这样的事情。此外,尽管HttpMethod == true,IsPostback仍将为false。这对我来说毫无意义。
另外,我已禁用EventValidation,因为我认为那可能是个问题,但问题仍然存在。
当重写URL时,如何使Viewstate和PostBack正常工作?
(注意,我的URL重写方式全部在内部进行,用户不会收到任何HTTP重定向)