【发布时间】:2010-09-29 01:23:23
【问题描述】:
我正在重写 URL Urlrewriting.net,并且遇到了一个似乎很常见的问题,但我似乎可以解决它。我将介绍一个简化的案例。
URL 重写完全符合规则:
<urlrewritingnet rewriteOnlyVirtualUrls="true" defaultPage="default.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
<rewrites>
<add name="catalog" virtualUrl="^~/catalog/(.*)/(.*).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/catalog.aspx?cid=$1&c=$2" ignoreCase="true"/>
</rewrites>
</urlrewritingnet>
在页面上,我有一个 DataList,里面有 2 个 asp:buttons。单击时,页面会刷新但不执行任何操作。
我遵循ScottGu's article 来实现一个表单控制适配器来重写表单的操作以匹配重写的 URL。
浏览器中的页面网址:http://...../dev/catalog/13/Music.aspx
<form name="aspnetForm" method="post" action="/dev/catalog/13/Music.aspx" id="aspnetForm">
我现在在表单操作上看到了正确的 URL,并且在调试时我可以看到页面加载事件触发。
现在的问题是每次页面加载时 Page.IsPostback 为 false,导致页面重新绑定 DataList,因此忽略了应该触发按钮的 ItemCommand。
if (!Page.IsPostBack)
PopulateControls();
我使用的是 .NET 3.5 SP1,母版页上有一个 ScriptManager,但此页面上没有 UpdatePanel。我也尝试过重置 Form.Action 属性并绕过 ScottGu 的解决方案,结果相同。如果我不使用重写器直接转到页面 URL,一切正常。
我错过了什么?
【问题讨论】:
-
有什么建议吗?我还是被困住了。谢谢!
标签: asp.net webforms url-rewriting postback urlrewriting.net