Я работаю над переписыванием 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: внутри.При нажатии страница обновляется, но ничего не делает.
Я следовал Статья Скотту , чтобы заставить адаптер управления формой переписать действие формы в соответствии с переписанным URL-адресом.
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 напрямую, без использования переписывающего устройства, все работает нормально.
Что мне не хватает?