如何让我的 api 数据显示在我的详细信息列表中?

Posted

技术标签:

【中文标题】如何让我的 api 数据显示在我的详细信息列表中?【英文标题】:How do I get my api-data to show up on my details list? 【发布时间】:2021-12-27 19:24:44 【问题描述】:

我可以通过创建这样的 ProductsController 来通过视图页面在我的 API 中列出我的所有产品:

    public async Task<ActionResult> Index()
    
        var http = new HttpClient();
        var products = await http.GetFromJsonAsync<List<Product>>("I won't write out my link so everyone can see it :P");

        return View(products);

之后我为这样的产品做了一个查看页面。

@foreach (var item in Model)

    <div class="col">
        <div class="card h-100">
            <div class="card-body">
                <p><small>@html.DisplayFor(modelItem => item.SubCatergoryId)</small></p>
                <img src=" @Html.DisplayFor(modelItem => item.ImageUrl)" class="card-img-top" >
                <h5 class="card-title">@Html.DisplayFor(modelItem => item.Name)</h5>
                <p class="card-text">@Html.DisplayFor(modelItem => item.Description)</p>
                <div class="d-flex justify-content-between align-items-center card-footer">
                    <p class="text-danger price pt-3">@Html.DisplayFor(modelItem => item.Price):-</p>
                    <a href="/home/details/@item.Id" class="btn btn-outline-secondary">Details<i class="fas fa-shopping-cart me-2"></i></a>
                </div>
            </div>
            <div class="card-footer">
                <small class="text-muted"><i class="fas fa-box text-success my-2">&nbsp;&nbsp;&nbsp;Lagerstatus</i></small>
            </div>
        </div>
    </div>



效果很好。但现在我想按下详细信息按钮,这会将我带到另一个视图(详细信息页面)。这是详情页的代码:

<div class="container mt-5">
    <div class="row row-cols-1 row-cols-md-4 g-4">

        <div class="col-lg">
            <div class="card h-100">
                <div class="card-body">
                    <img src="@Html.DisplayFor(model => model.ImageUrl)" class="card-img-top" >
                    <h5 class="card-title">@Html.DisplayNameFor(model => model.Name)</h5>
                    <p class="card-text">
                        <b></b> <br>@Html.DisplayNameFor(model => model.Description)</p>
                    <div class="d-flex justify-content-between align-items-center">
                        <p class="text-danger price pt-3">@Html.DisplayNameFor(model => model.Price):-</p>
                        <button class="btn btn-outline-secondary">
                            Beställ
                            <i class="fas fa-shopping-cart me-2"></i>
                        </button>
                    </div>
                </div>
                <div class="card-footer">
                    <small class="text-muted"><i class="fas fa-box text-success my-2">&nbsp;&nbsp;&nbsp;Lagerstatus</i></small>
                </div>
            </div>
        </div>
    </div>
</div>

这是我得到的:Details Page

这是我第一次使用 Asp.net 并制作自己的 API。

【问题讨论】:

【参考方案1】:

@Html.DisplayNameFor 显示属性的名称或在属性的显示属性中定义的字符串。

@Html.DisplayFor 显示字段的值。

将您的代码更改为:

<div class="container mt-5">
    <div class="row row-cols-1 row-cols-md-4 g-4">

        <div class="col-lg">
            <div class="card h-100">
                <div class="card-body">
                    <img src="@Html.DisplayFor(model => model.ImageUrl)" class="card-img-top" >
                    <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>
                <div class="card-footer">
                    <small class="text-muted"><i class="fas fa-box text-success my-2">&nbsp;&nbsp;&nbsp;Lagerstatus</i></small>
                </div>
            </div>
        </div>
    </div>
</div>

注意:

确保model.ImageUrl 的值应等于/location/filename.extension。请务必在开头添加单斜杠并指定文件名。

【讨论】:

非常感谢:) 嗨@PouryaYarahmadi,如果我的回答可以帮助您解决问题,您能接受吗?参考:How to accept as answer。谢谢。

以上是关于如何让我的 api 数据显示在我的详细信息列表中?的主要内容,如果未能解决你的问题,请参考以下文章

如何显示上一个和下一个列表项的详细信息

Android如何从同一个数组中仅显示列表视图中的某些项目?

如何让我的 Rails 5 日志向我显示与 Rails 4 一样的每个操作的详细信息?

如何在我的条纹 STPCardFormView 中显示我扫描的卡片详细信息?

数据列表更多详细信息选项的问题

如果我的列表为空,如何显示图像?