这是我试图从.js文件中获取的url,其中包含与淘汰相关的函数:
self.followAction = $ .resolvePath(" / People / Follow?uid =" + data.UserId); 这里的人是控制器,跟随是动作方法,点击按钮,我想发送userId,所以我写了这个。
要从javascript中解析相对路径,我已编写此函数
// Fix for resolving relative paths from within js scripts
$.resolvePath = function(url)
{
var path = '@Request.ApplicationPath';
if (path != '/') return path + url;
return url;
};
但是,点击按钮,我收到此错误:HTTP错误404.0 - 未找到 它正在尝试的网址是:
localhost:44305/People/@Request.ApplicationPath/People/Follow?uid=8
我知道剃刀代码不是在js文件中解释的。 所以,我把这个功能放在局部视图中:
$.resolvePath = function(url)
{
var path = '@Request.ApplicationPath';
if (path != '/') return path + url;
return url;
};
我试过在布局主管部分直接调用它,如下所示:
<head>
<script src="~/Scripts/jquery-1.8.2.min.js" type="text/javascript"></script>
@{ Html.RenderPartial("VirtualPathFix"); }
</head>
然后错误开始显示:
$.resolveurl: function is not defined
如果我把这个函数直接放在scripts文件夹中的people.js文件中,那么没有错误,但是按下按钮点击,http 404错误与url传递的是:
localhost:44305/People/@Request.ApplicationPath/People/Follow?uid=8
任何人都可以帮助我。感到失落
我试图在视图页面的标题中使用window.baseUrl,如darin所建议的那样:
<script type="text/javascript">
window.baseUrl = '@Url.Content("~/")';
</script>
但我的people.js文件无法获取此属性,因此错误为:
Uncaught TypeError: window.baseUrl is not a function on line18 in people.js file. Can anyone tell me what are other things to try.
答案 0 :(得分:4)
您可以在Razor模板中准备此网址:
<head>
<script type="text/javascript">
window.baseUrl = '@Url.Content("~/")';
</script>
</head>
现在,在您的js文件中,您可以使用此变量window.baseUrl
您不再需要此$.resolvePath
函数。