简介
我正在开发一个MVC.Net项目。我刚刚启动了一个带有Home Controller和Index动作的默认网站。我使用'Home/Index/1'
浏览到视图,并且每个工作都正常。
现在我想添加一个额外的url参数,所以我更改了我的global.asax并添加了一个foo参数:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}/{foo}", // URL with parameters
new {controller = "Home", action = "Index", id = UrlParameter.Optional, foo = UrlParameter.Optional} // Parameter defaults
);
在页面上我也有一点点jquery。例如这个脚本:
<script type="text/javascript">
$(document).ready(
function ()
{
});
</script>
问题
但现在当我使用'Home / Index / 1/1'浏览我的页面时,我收到一个javascript错误:
Microsoft JScript运行时错误:预期的对象
当我浏览到'Home/Index/1'
的页面时,一切正常。可能我的网址路由有问题,但我不知道我做错了什么。
答案 0 :(得分:1)
您还可以使用以下语法强制解析路径
&lt; script src =“&lt;%:Url.Content(”〜/ Scripts / jquery-1.4.1.js“)%&gt;”类型= “文本/ JavaScript的” &GT;
答案 1 :(得分:0)
问题的原因是您的脚本源位置。我假设您的脚本源是../../Scripts/jquery.js
,当您在页面中附加js文件时,应用程序始终会创建这个源代码。
解释
js file mapped in `../../Scripts/jquery.js`
Page is `Home/Index/1/1`
js real content is placed in `/Scripts`
when the parser looks for the js it looks in `/Home/Scripts`
which is not where it where it is. Since ../.. = /Home in Home/Index/1/1
我的建议是
<%
string baseUrl = "http://" + Request.Url.Host + (Request.Url.Port != 80 ? ":" + Request.Url.Port.ToString() : "");
$>
<script type="text/javascript" language="javascript" src="<%=baseUrl %>/Scripts/jquery-1.4.1.js"></script>
这也适用于页面中包含的CSS文件。但是对于CSS链接,您不会将"
放在href
标记的<link>
属性中
与here
中的答案相关