即使Request.HttpMethod为“POST”,IsPostback也为false吗?

4

最近我一直在研究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重定向)

2个回答

0

你可能需要告诉HttpContext URL也被重写了。

尝试像这样做:

HttpContext.Current.RewritePath("/test");

1
很遗憾,这个并没有任何作用。不过,我相信它使我的表单重写代码变得毫无意义,所以这算是一件好事。 - Earlz
如果在页面加载之后执行,这似乎只会替换我的表单重写代码。 - Earlz

0

IsPostBack 用于检查请求是否来自页面本身的控件。

而 HttpMethod 用于检查请求类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接