【发布时间】:2012-01-30 22:02:24
【问题描述】:
首先,我的整个网站运行良好。到目前为止,所有页面都没有 URL 参数。现在问题开始了。我有一个 Flash 横幅,它必须是 Apple 移动设备上的 PNG 静态图像。在我创建一个带有参数的页面(例如:mysite.com/Controller1/Page1/1)之前,它工作得很好。只要我有一个参数,就会出现两个横幅(flash 和 PNG)。
这是我的 iOS.js:
if (navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i))
{
alert("This was called - Mac mobile devices");
document.write('<style type="text/css"><!--#swf{display:none;}--></style>');
}
else {
alert("This was called - PC");
document.write('<style type="text/css"><!--#no-swf{display:none;}--></style><script src="js/swfobject_modified.js" type="text/javascript"></script>');
}
这是我的部分视图 Header 的摘要(刚刚从行为相同的 _Layout 中提取):
@Html.JsScript("../../Scripts/iOS.js")
<div id="swf">
MY FLASH BANNER
</div>
<div id="no-swf">
MY STATIC IMAGE
</div>
当我尝试正常页面(无参数)时,我总是有消息框This was called - PC,但是当我添加参数时(即使在同一页面上!),我没有收到任何消息。
可能是路由问题?我简化到最大只留下一条路线:
routes.MapRoute(
null, // Nom d'itinéraire
"{controller}/{action}/{id}", // URL avec des paramètres
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Paramètres par défaut
);
知道发生了什么吗?
【问题讨论】:
-
通常,URL 上下文中的“参数”指的是查询中的某些内容,如
/path?param-name=param-value。 “mysite.com/Controller1/Page1/1”中的参数是什么意思? -
mysite.com/Controller1/Page1/1 等于 mysite.com/Controller1/Page1//path?id=1。它只是更清洁。当然需要设置。
-
所以“mysite.com/Controller1/Page1”有效,但“mysite.com/Controller1/Page1/1”无效?
-
页面可以正常工作,只是没有调用 javascript,所以 flash 和静态横幅显示在另一个之上(因为 flash 是透明的,所以很难看)
-
iOS.js 是通过相对 URL 加载的吗?添加路径元素时,需要在相对 URL 中添加
../以使其引用相同的内容。
标签: javascript html asp.net-mvc razor asp.net-mvc-routing