从 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 就会被调用。