我有(topbar + sidebar + bottombar)作为Vuejs组件,它们是每个View中页面布局的一部分。 在顶部的vuejs文件中,我有一种通过API请求将“一些”数据加载到我的控制器之一的方法:
beforeMount() {
this.loggedUserDeputies.userDeputies = [];
console.log("calling LoadLoggedUserDeputies");
$.get('api/Timesheets/LoadLoggedUserDeputies')
.then(response => response as Promise<LoggedUserDeputies>)
.then(data => {
this.loggedUserDeputies = data;
});
},
API控制器方法:
[Route("api/[controller]/[action]")]
public object LoadLoggedUserDeputies()
{
if (ActualUserContract.LoggedUserDeputies == null)
{
return null;
}
var result = ActualUserContract.LoggedUserDeputies
.ToList()
.Select(x => new
{
userContractId = x.UserContract.Id,
userContractFullName = x.UserFullName,
userContractPersonalNumber = x.UserContract.PersonalNumber
});
return new { userDeputies = result };
}
但是我有一个问题,用于获取数据的url总是根据我所在的当前视图进行修改。
(因此不必总是调用:https://localhost:44380/api/Timesheets/LoadLoggedUserDeputies
它将转换为:https://localhost:44380/Activities/api/Timesheets/LoadLoggedUserDeputies
或https://localhost:44380/Reports/api/Timesheets/LoadLoggedUserDeputies
)。即使它是由相同的布局组件调用的(这对我来说是新的,对我的无知表示歉意)。
有什么办法可以始终从每个视图调用相同的URL:https://example.com/api/Timesheets/LoadLoggedUserDeputies
吗?
答案 0 :(得分:1)
您正在使用相对路径加载文件:
$.get('api/Timesheets/LoadLoggedUserDeputies')
您需要在其前面加一个斜杠以使其成为绝对路径
$.get('/api/Timesheets/LoadLoggedUserDeputies')
将从当前服务器加载。如果也要指定服务器:
$.get('https://example.com/api/Timesheets/LoadLoggedUserDeputies')