从 JS 文件调用 .Net 控制器操作
Call .Net controller action from JS file
我试图在 Apicontroller 中访问此操作方法,但从未访问过。
相反,我收到 404 错误。
这是JS文件
function getToken(params) {
return new Promise((resolve, reject) => {
$.ajax({
url: '/api/GetToken',
type: 'POST',
contentType: 'text/plain',
data: params,
success: launchParams => {
resolve(launchParams);
},
error: err => {
console.log('Error in getting token!', err);
reject(err);
}
});
});
}
这是我的操作方法
[Route("api")]
[ApiController]
public class ApiController : ControllerBase
{
//other actions ...
[Route("GetToken")]
[HttpPost]
[Consumes("text/plain")]
[Produces("text/plain")]
public async Task<JsonResult> GetToken()
{
//some code...
}
}
注意:我用的是razor pages,我所有的页面都是用JS函数来获取token的。
如果你在 razor 页面项目中使用 ApiController,你需要像这样配置路由:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
这样你的 ApiController 就会被调用。
我试图在 Apicontroller 中访问此操作方法,但从未访问过。 相反,我收到 404 错误。
这是JS文件
function getToken(params) {
return new Promise((resolve, reject) => {
$.ajax({
url: '/api/GetToken',
type: 'POST',
contentType: 'text/plain',
data: params,
success: launchParams => {
resolve(launchParams);
},
error: err => {
console.log('Error in getting token!', err);
reject(err);
}
});
});
}
这是我的操作方法
[Route("api")]
[ApiController]
public class ApiController : ControllerBase
{
//other actions ...
[Route("GetToken")]
[HttpPost]
[Consumes("text/plain")]
[Produces("text/plain")]
public async Task<JsonResult> GetToken()
{
//some code...
}
}
注意:我用的是razor pages,我所有的页面都是用JS函数来获取token的。
如果你在 razor 页面项目中使用 ApiController,你需要像这样配置路由:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
这样你的 ApiController 就会被调用。