ASP.NET url重写和使用带有提交行为的ASP.NET按钮的问题

时间:2014-01-09 04:27:01

标签: asp.net url-rewriting

在使用ASP.NET按钮提交行为执行表单发布时,我遇到了执行ASP.NET URL重写的问题。我不确定是什么问题。使用GET方法时,我的重写规则工作正常但是当我点击一个按钮时,页面会维护重写的URL并将查询字符串附加到它。我需要从一个带有重写URL的页面发布到另一个页面而不重写。以下是我的重写规则:

<rewrite>
            <rules>
                <rule name="Imported Rule 1">
                    <match url="^[a-zA-Z0-9|&amp;+-]+-([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|&amp;+-]+-([0-9]+)/[a-zA-Z0-9|&amp;+-]+-([0-9]+)-([0-9]+)/?$" ignoreCase="false" />
                    <action type="Rewrite" url="productdetails.aspx?Product={R:3}&amp;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行为。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为问题在于您使用的Get方法是异步调用。虽然asp.net按钮单击会将完整的帖子返回到页面。 .net生命周期在触发按钮事件之前加载页面。见http://msdn.microsoft.com/en-us/library/ms178472.aspx

我希望这会有所帮助