繁体   English   中英

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

[英]ASP.NET 4.0 WebForms Routing Javascript not works

我尝试使用ASP.NET 4.0 WebForms路由。 这是我的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}"); 但这并没有帮助我。 有任何想法吗?

我已经解决了我的问题! 该解决方案包括2个部分。 首先,我将脚本定义从

<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}");

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM