Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有控制器操作名称的Web api路由前缀_C#_Jquery_Ajax_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 带有控制器操作名称的Web api路由前缀

C# 带有控制器操作名称的Web api路由前缀,c#,jquery,ajax,asp.net-core,asp.net-core-webapi,C#,Jquery,Ajax,Asp.net Core,Asp.net Core Webapi,我有一个asp.net core 3.1应用程序。在启动文件中,我有以下路径 app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller}/{action}/{id?}",

我有一个asp.net core 3.1应用程序。在启动文件中,我有以下路径

  app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller}/{action}/{id?}",
                defaults: new { controller = "Home", action = "Index" });
            endpoints.MapControllers();
            endpoints.MapRazorPages();
        });
我有带索引和详细信息视图的位置控制器

 public class PositionController : Controller
{
    private readonly IPositionRepository repository;

    public Position Position { get; set; }

    public PositionController(IPositionRepository repository)
    {
        this.repository = repository;
    }
    
    public IActionResult Index()
    {
        return View();
    }

    public async Task<IActionResult> Details(int id)
    {
        if (id < 0)
            return View();

        Position = await repository.FindPositionById(id);

        if (Position == null)
           return RedirectToAction("_NotFound");

        return View(Position);
    }
我可以为索引视图获取数据,但不能为详细信息视图获取数据。web api路由指向https://localhost:44356/Position/Details/1/api/positions/1/tasks 应该指出哪一点https://localhost:44356/api/positions/1/tasks. 原因是我使用以下路径获取索引视图的数据https://localhost:44356/api/positions/

我认为,问题与默认路线有关。索引视图不显示在url中,但详细信息视图显示在url中。

试试看

function loadPositions() {
positions =
    $('#positionsList').DataTable({
        "ajax": {
            "url": "/api/positions",
            "type": "get",
            "datatype": "json"
        },...
使用你的代码,我重现了你的问题

只需在loadTaskGroups方法中删除ajax url中的/即可

以下是测试结果:


抱歉出错,详细信息视图指向。职位id=1[审核]欢迎!如果你有更正,就不要把它放在评论中。。建议改为编辑/更正问题文本。我从其他地方找到了答案,我有一个带有onclick事件处理程序的按钮,为了在此事件处理程序中引用我的api,我将“api/positions…”更改为“/api/positions…”。这帮我解决了我的问题。无论如何,谢谢你的帮助。
function loadPositions() {
positions =
    $('#positionsList').DataTable({
        "ajax": {
            "url": "api/positions",
            "type": "get",
            "datatype": "json"
        },...

function loadTaskGroups(posId) {
taskGroups =
    $('#taskGroups').DataTable({
        "ajax": {
            "url": `/api/positions/${posId}/tasks`,
            "type": "get",
            "datatype": "json"
        },...
function loadPositions() {
positions =
    $('#positionsList').DataTable({
        "ajax": {
            "url": "/api/positions",
            "type": "get",
            "datatype": "json"
        },...
function loadTaskGroups(posId) {
taskGroups =
    $('#taskGroups').DataTable({
        "ajax": {
            "url": `api/positions/${posId}/tasks`,
            "type": "get",
            "datatype": "json"
        },...