ASP.NET 4.0 WebForms路由Javascript不起作用

ASP.NET 4.0 WebForms Routing Javascript not works

本文关键字:路由 Javascript 不起作用 WebForms NET ASP      更新时间:2023-09-26

我正在尝试使用ASP.NET 4.0 WebForms Routing。这是我的RegisterRoutes功能:

 void RegisterRoutes(RouteCollection routes)
    {
        routes.Ignore("{resource}.axd/{*pathInfo}"); 
        routes.MapPageRoute("GoodInfo", "catalog/good/{good}", "~/GoodInfo.aspx");
        routes.MapPageRoute("GoodGroup", "catalog/group/{group}", "~/default.aspx");
    }

对于像/catalog/group/{group}这样的页面,一切都可以。但是catalog/good/{good}页面存在问题。

第一件奇怪的事:当我打开这个页面时,它会调用两次。所以我看到了Page.RouteData.Values["good"]的值。Page.RouteData.Values["good"]中的第一次有正确的值(我的goodId),但第二次我得到了字符串值"WebResource.axd"!

所以我的高速JavaScript在页面上不起作用。当我点击高滑动图像时,页面会重新加载,而不是执行JavaScript。

我添加了这行routes.Ignore("{resource}.axd/{*pathInfo}");,但对我没有帮助。有什么想法吗?

我已经解决了我的问题!该解决方案由两部分组成。首先,我更改了中的脚本定义

<script type="text/javascript" src="../scripts/something.js"></script>

<script type="text/javascript" src="/../scripts/something.js"></script>

感谢MilkyWayJoe提供的解决方案。

其次,我添加了忽略路由

routes.Ignore("catalog/good/{resource}.axd/{*pathInfo}");

而不是:

routes.Ignore("{resource}.axd/{*pathInfo}");

所以我的网络资源在http://mysite.com/catalog/good/41 这样的页面上没有更多的路由

此外,我在页面上有类似http://mysite.com/catalog/good/41/event/seq/1的脚本事件。为了捕捉所有参数,我将此添加到我的路线规则中

   routes.Ignore("catalog/good/{good}/{*query1}");
   routes.Ignore("catalog/good/{good}/{query1}/{*query2}");
   routes.Ignore("catalog/good/{good}/{query1}/{query2}/{*query3}");
   routes.Ignore("catalog/good/{good}/{query1}/{query2}/{query3}/{*query4}");

不要忘记,您的Ignore声明必须放在MapPageRoute声明之前:

routes.Ignore("catalog/good/{resource}.axd/{*pathInfo}");
routes.MapPageRoute("GoodInfo", "catalog/good/{good}", "~/GoodInfo.aspx");`enter code here`