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

如何让API返回的数据正常显示在ASP.NET应用的详情页中?

问题原因及解决步骤

1. 补全Controller中缺失的Details Action方法

你目前只实现了返回产品列表的Index方法,点击详情跳转的路由对应Action完全没有实现,无法将指定ID的产品数据传递给详情视图。你需要在Controller中添加如下代码:

// 注意路由需和跳转路径匹配,若你的Controller名为ProductsController,列表页跳转链接应改为/Products/Details/@item.Id
public async Task<ActionResult> Details(int id)
{
    var http = new HttpClient();
    // 调用你的API单产品查询接口,传入id获取对应产品数据
    var product = await http.GetFromJsonAsync<Product>($"你的API单产品查询地址/{id}");
    // 将产品数据传递给详情视图
    return View(product);
}

2. 修正详情页的Html辅助方法调用错误

你当前详情页全使用了@Html.DisplayNameFor()方法,该方法的作用是输出模型属性的名称(比如Name属性就输出"Name"),这就是你页面只展示字段名不展示实际数据的原因。你需要替换为和列表页一致的@Html.DisplayFor()来输出属性的实际值,修正后的核心代码如下:

<div class="card-body">
    <img src="@Html.DisplayFor(model => model.ImageUrl)" class="card-img-top" alt="产品图片">
    <h5 class="card-title">@Html.DisplayFor(model => model.Name)</h5>
    <p class="card-text">
        <b></b> <br>@Html.DisplayFor(model => model.Description)
    </p>
    <div class="d-flex justify-content-between align-items-center">
        <p class="text-danger price pt-3">@Html.DisplayFor(model => model.Price):-</p>
        <button class="btn btn-outline-secondary">
            Beställ
            <i class="fas fa-shopping-cart me-2"></i>
        </button>
    </div>
</div>

可选优化建议

  • 不要在每个Action中重复new HttpClient,建议通过依赖注入注入IHttpClientFactory创建HttpClient实例,避免出现套接字耗尽的问题
  • 页面跳转链接尽量用@Url.Action("Details", "Products", new { id = item.Id })生成,不要硬编码路径,避免后续路由规则修改后链接失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:03