Urlrewriting.net IsPostBack всегда ложь - PullRequest
       28

Urlrewriting.net IsPostBack всегда ложь

0 голосов
/ 29 сентября 2010

Я работаю над переписыванием 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&amp;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 напрямую, без использования переписывающего устройства, все работает нормально.

Что мне не хватает?

Ответы [ 5 ]

2 голосов
/ 30 октября 2010

Это проблема LinkButton, все ссылки должны быть удалены со страницы, включая главную страницу.

0 голосов
/ 06 октября 2014

Я столкнулся с той же проблемой - UrlRewriter и значение обратной передачи кнопки всегда ложно. (без LinkButtons с указанным PostBackUrl)

Я добавил ScottGu FormControlAdapter, и он сработал для меня - ОДНАКО - через некоторое время я заметил, что время моей загрузки действительно страдает. Я в конце концов отследил его до base.Render(new RewriteFormHtmlTextWriter(writer)); событие в FormControlAdapter, которое иногда может занять более 5 секунд.

Если я удалил FormControlAdapter из моего файла .browser, кнопка домашней страницы больше не будет правильно отправлять сообщения (всегда false).

На моей домашней странице отображался тег формы с пустым атрибутом действия <form action="" >

В моей ситуации рассматриваемая кнопка находится на моей главной странице. Установив вручную действие формы в событии Page_Load моего MasterPage (в моем случае это «default.aspx»), я смог удалить FormControlAdapter, и кнопка верна обратно.

protected void Page_Load(object sender, EventArgs e)
 {
     if (Request.RawUrl == "/" || Request.RawUrl == "/default.aspx")
         form1.Action = "default.aspx";
     else
         form1.Action = Request.RawUrl;

Так что, похоже, все, что действительно необходимо, это установить форму Action. Решение ScottGu прекрасно и гибко, но кажется очень медленным

0 голосов
/ 06 июня 2011

Это беспокоило меня 4 часа подряд.

Ответ, который я использовал, фактически удалял все postbackurl и navigateurl.

Все остальное не удалось, но это сработало как шарм. Действительно безумно, как это было проблемой, но это так.

0 голосов
/ 05 марта 2011

Сэмми прав. Я провожу около 5 часов, пока не найду проблемы.

Я прочитал много статей о проблеме перезаписи URL-адресов и проблем обратной передачи в ASP.NET, пока не нашел проблему. Вам не нужны такие решения, как: http://weblogs.asp.net/jezell/archive/2004/03/15/90045.aspx и они тоже не работают ...

РЕШЕНИЕ: Вы можете использовать asp: Linkbutton, asp: Button, asp: ImageButton, НО НЕ УСТАНАВЛИВАЙТЕ их postbackurl. Просто используйте < a > тег вместо кнопки ссылки.

0 голосов
/ 30 сентября 2010

Стойкость окупается.Оказывается, проблема была в следующем коде на главной странице:

<asp:LinkButton runat="server" PostBackUrl="~/basket.aspx" Text="View Cart" CausesValidation="false" />

Я заменил его стандартным тегом <a>, и все работает отлично.разница здесь.Я предполагаю, что при переписывании URL-адресов любой PostBackUrl или NavigateUrls сломает обратные ссылки.

...