【问题标题】:How do I get my api-data to show up on my details list?如何让我的 api 数据显示在我的详细信息列表中?
【发布时间】: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" alt="">
                <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" alt="75\">
                    <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。

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc


    【解决方案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" alt="75\">
                        <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。谢谢。
    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 2019-04-28
    相关资源
    最近更新 更多