Je travaille sur la réécriture des URLs Urlrewriting.net, et j'ai rencontré ce qui semble être un problème courant mais je peux sembler le résoudre. Je vais présenter un cas simplifié.Urlrewriting.net IsPostBack toujours faux
La réécriture d'URL fonctionne parfaitement avec la règle:
<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>
Sur la page J'ai un DataList avec 2 asp: boutons à l'intérieur. Lorsque vous cliquez dessus, la page est actualisée mais ne fait rien.
J'ai suivi ScottGu's article pour implémenter un adaptateur de contrôle de formulaire pour réécrire l'action du formulaire afin qu'il corresponde à l'URL réécrite.
URL de la page dans le navigateur: http://...../dev/catalog/13/Music.aspx
<form name="aspnetForm" method="post" action="/dev/catalog/13/Music.aspx" id="aspnetForm">
Je vois maintenant l'URL correcte sur l'action de la forme, et lors du débogage je peux voir le tir de l'événement de chargement de la page. Le problème est maintenant que chaque fois que la page charge Page.IsPostback est false, entraînant la page à relier la DataList et donc à ignorer la commande Item, les boutons doivent être déclenchés.
if (!Page.IsPostBack)
PopulateControls();
J'utilise .NET 3.5 SP1, il y a une ScriptManager sur la page principale, mais pas UpdatePanel sur cette page. J'ai également essayé de réinitialiser la propriété Form.Action et de contourner la solution de ScottGu avec le même résultat. Si je vais directement à l'URL de la page sans utiliser le réécriteur, tout fonctionne correctement.
Qu'est-ce qui me manque?
Des suggestions? Je suis toujours coincé. Merci! – Sammy