如何从razor代码返回window.baseUrl到我的外部.js文件

时间:2016-01-08 05:43:20

标签: javascript jquery asp.net-mvc razor

我已将此javascript函数包含在这样的视图页面的head部分中,我想在我的people.js文件中调用此window.baseUrl,该文件位于scripts文件夹中:

   <head>
   <script type="text/javascript">
        window.baseUrl = '@Url.Content("~/")';  
   </script>
   @*<script type="text/javascript" src="@Url.Content("~/scripts/people.js")">    </script>*@
  </head>

在people.js文件中,我试图像这样调用这个函数:

self.followersUrl = window.baseUrl("/People/Followers?uid=" + data.UserId);

但它给了我错误:

Uncaught TypeError: window.baseUrl is not a function

我想知道如何注入这个。 在视图页面上,我想发送此followersUrl和其他网址,如下所示:

 <a data-bind="attr: { href: followersUrl }">
  <a class="btn pull-right" data-bind="visible: !isFollowed && !isOwnProfile, attr: { href: followAction }">Follow</a>

从Scott的回答中,他建议将其作为window.baseUrl不是一个函数,所以我尝试了这个:

 self.followAction = window.baseUrl + '/People/Follow?uid=' + data.UserId;

现在,当我尝试点击“关注”按钮时,

给出错误我在控制台中检查了这个:人/关注?uid = 8 net :: ERR_NAME_NOT_RESOLVED控制台中的网址是人/关注?uid = 8:1但我在浏览器标签中看到正确的网址是人/跟踪?UID = 8

在这里,你可以看到大写P改为小p然后我回到.js文件并尝试了这个:

 self.followAction = window.baseUrl + 'localhost:44305/People/Follow?uid=' + data.UserId;

然后它的发送网址如下:

 https://localhost:44305/localhost:44305/People/Follow?uid=8

这里发生了什么。请给我一些建议

2 个答案:

答案 0 :(得分:0)

window.baseUrl是一个字符串,而不是函数。

你可能想要:

window.baseUrl + '/People/Followers?uid=' + data.UserId;

答案 1 :(得分:0)

我已经尝试过在互联网上提供的所有东西但是无法完成它然后我尝试手动插入数据,最后我写了这一行:

self.followAction = location.protocol + "//" + location.host + '/People/Follow?uid=' + data.UserId;

在这里,我不需要任何外部的javascript函数,也不需要从任何地方调用它,它就是神奇的。