在使用ASP.NET按钮提交行为执行表单发布时,我遇到了执行ASP.NET URL重写的问题。我不确定是什么问题。使用GET方法时,我的重写规则工作正常但是当我点击一个按钮时,页面会维护重写的URL并将查询字符串附加到它。我需要从一个带有重写URL的页面发布到另一个页面而不重写。以下是我的重写规则:
<rewrite>
<rules>
<rule name="Imported Rule 1">
<match url="^[a-zA-Z0-9|&+-]+-([0-9]+)/?$" ignoreCase="false" />
<action type="Rewrite" url="products.aspx?Category={R:1}" appendQueryString="false" />
</rule>
<rule name="Imported Rule 2">
<match url="^[a-zA-Z0-9|&+-]+-([0-9]+)/[a-zA-Z0-9|&+-]+-([0-9]+)-([0-9]+)/?$" ignoreCase="false" />
<action type="Rewrite" url="productdetails.aspx?Product={R:3}&Type={R:2}" appendQueryString="false" />
</rule>
<rule name="Imported Rule 3" stopProcessing="true">
<match url="^default\.aspx$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{THE_REQUEST}" pattern="^[A-Z]{3,9}\ /default\.aspx\ HTTP/" ignoreCase="false" />
</conditions>
<action type="Redirect" url="http://www.domain.com/" redirectType="Permanent" />
</rule>
<rule name="Imported Rule 4" stopProcessing="true">
<match url="." ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="/default.aspx" />
</rule>
<rule name="Imported Rule 5" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^domain.com" />
</conditions>
<action type="Redirect" url="http://www.domain.com/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
当我点击“添加到购物车”按钮时,请说“productdetails.aspx”页面,该页面只回发自己,虽然我已经在提交的按钮上定义了一个“[fullurl] /addtocart.aspx”的postbackurl行为。
任何帮助都将不胜感激。
答案 0 :(得分:1)
我认为问题在于您使用的Get方法是异步调用。虽然asp.net按钮单击会将完整的帖子返回到页面。 .net生命周期在触发按钮事件之前加载页面。见http://msdn.microsoft.com/en-us/library/ms178472.aspx
我希望这会有所帮助