[英]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.