首页 > 解决方案 > 剃须刀页面中的路由问题

问题描述

这个已经让我发疯了几个星期了,所以如果有人能指出我正确的方向,我将非常感激。

我正在使用.net core 和 Razor Pages 开发一个相对简单的 CRUD 应用程序。

我已经使用 Visual Studio 2019 社区启动了一个新应用程序,并且我要求提供标准 CRUD 选项。通过一些调整和数据库创建,应用程序运行良好。这是名为“类别”的表的标准 .net 核心表显示

在此处输入图像描述

但是,我想要一个更漂亮的表,所以我尝试使用来自一些 JavaScript 的 ajax 调用。

在我有的页面上

    <div class="col-12 border p-3">

        <table id="DT_load" class="table table-striped table-bordered" style="width:100%">
            <thead>
                <tr>
                    <th>Id</th>
                    <th>Name</th>
                    <th>In Use?</th>


                </tr>
            </thead>
        </table>
    </div>

</div>
@section Scripts
{

    <script src="~/js/categoryList.js"></script>

}

这指向这个 Javascript

var dataTable;


$(document).ready(function () {
    loadDataTable();
    alert($('#DT_load').html())
    });

    function loadDataTable() {

    dataTable = $('#DT_load').dataTable
         ({
            "ajax":
            {
                "url": "/controllers/categories",
                "type": "GET",
                "datatype": "json"
            },
            "columns":
                [
                  { "data": "id", "width": "50%" },
                  { "data": "category", "width": "50%" },
                  { "data": "inUse", "width": "50%" },
                ],
            "language":
                {
                "emptyTable": "no data found"
            },
            "width": "100%"
        });
}

哪个应该............然后访问这个控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Investments10.Models;

namespace Investments10
{
[Route("api/Category")]
//[Route("api/CategoryController")]
[ApiController]
public class CategoriesController : ControllerBase
{
    private readonly aspnetInvestments1053bc9b9d9d6a45d484292a2761773502Context _context;

    public CategoriesController(aspnetInvestments1053bc9b9d9d6a45d484292a2761773502Context context)
    {
        _context = context;
    }

    // GET: api/Categories
    [HttpGet]
    public async  Task<ActionResult> GetAllCategory()

    {

        return new JsonResult (new { data = await _context.Category.ToListAsync() });
    }

    // GET: api/Categories/5
    [HttpGet("{id}")]
    public async Task<ActionResult<Category>> GetCategory(int id)
    {
        var category = await _context.Category.FindAsync(id);

        if (category == null)
        {
            return NotFound();
        }

        return category;
    }

但是,它永远不会到达控制器。我在控制器中设置了几个断点,但它没有到达那里。我怀疑问题出在我为 Ajax 调用指定的 URL 中,但我尝试了一大堆变体,但似乎没有一个可以让调用访问控制器。

文件结构如下。

在此处输入图像描述

特别令人恼火的是,我知道这种技术是有效的,因为我有一个来自其他人项目的几乎相同的例子,它运行良好。

任何帮助将不胜感激。谢谢!

标签: javascriptc#ajaxvisual-studioasp.net-core-3.1

解决方案


啊哈哈!我发现了这个问题。为了在控制器中使用路由,我需要添加该行

            endpoints.MapControllers();

进入我的 startup.cs 文件


推荐阅读