You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Foody项目点击分类仅显示JSON,需卡片展示菜谱+404错误排查

解决Foody项目分类点击后显示JSON及404错误问题

一、先搞定404错误(核心根源)

控制台报错/api/dishes/GetDishesByCategory找不到,按以下步骤排查:

  • 检查后端控制器路由配置
    • 确认负责该接口的控制器(比如DishesController或CategoryController)是否有正确的路由特性,比如控制器顶部是否加了[Route("api/[controller]")],GetDishesByCategory方法是否加了[HttpGet("GetDishesByCategory")]
    • 核对方法参数绑定:如果需要传递分类ID,方法参数是否加了[FromQuery]或[FromRoute],确保前端请求能正确传递参数
  • 校验前端请求URL
    • 检查页面中发起请求的代码(比如AJAX),确认URL拼写、大小写完全匹配后端接口路由,避免出现api/dish/xxx少加s或者路径片段错误的情况

二、解决页面显示JSON而非卡片的问题

这个问题通常是404导致渲染逻辑失效,或者后端返回类型错误:

  • 检查视图文件DishByCategory.cshtml
    • 确认页面顶部绑定了正确的模型:@model IEnumerable<YourProject.Models.Dish>
    • 检查卡片渲染的循环代码是否正常,比如:
      @foreach (var dish in Model)
      {
          <div class="card mb-3">
              <div class="card-body">
                  <h5 class="card-title">@dish.Name</h5>
                  <p class="card-text">@dish.Description</p>
              </div>
          </div>
      }
      
  • 检查控制器返回类型
    • 处理分类请求的控制器方法(比如HomeController或CategoryController中的DishByCategory),必须返回视图而非JSON,正确示例:
      public IActionResult DishByCategory(int categoryId)
      {
          var dishes = _dishRepository.GetDishesByCategory(categoryId);
          return View(dishes);
      }
      
      避免返回Json(dishes),这会直接输出JSON数据而非渲染视图
  • 排查异步渲染逻辑(如果用AJAX加载)
    • 如果页面是通过AJAX拉取数据后渲染卡片,检查success回调是否正确操作DOM:
      const categoryId = 1; // 替换为实际选中的分类ID
      fetch(`/api/dishes/GetDishesByCategory?categoryId=${categoryId}`)
          .then(res => res.json())
          .then(data => {
              const container = document.getElementById('dish-container');
              container.innerHTML = '';
              data.forEach(dish => {
                  const card = `<div class="card"><h3>${dish.Name}</h3></div>`;
                  container.insertAdjacentHTML('beforeend', card);
              });
          })
          .catch(err => console.error('加载失败:', err));
      
    • 确保请求成功后执行了卡片渲染代码,而非直接将响应内容输出到页面

三、分步验证流程

  1. 先验证接口可用性:在浏览器地址栏直接访问http://localhost:5229/api/dishes/GetDishesByCategory?categoryId=1(替换为有效分类ID),确认能正常返回菜品JSON数据
  2. 再验证页面渲染:接口正常后,点击分类按钮,检查页面是否正确渲染卡片;若仍显示JSON,检查控制器是否返回了视图而非JSON结果

内容的提问来源于stack exchange,提问作者sudearici

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:52:33