json 值不能为空,Arg_ParamName_Name

monwx1rj  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(156)

我正在开发一个asp.net mvc结构的项目。我想创建我从一个web服务购买的书籍的详细页面,但是我遇到了一个问题,无法解决它。我需要帮助。
Web API:https://gutendex.com/
这些是我主页的代码。

@model BookListModel

<div class="col-md-12">
    <div class="row">
        @foreach (var books in Model.results)
        {

            <div class="col-md-3 text-truncate">
                <img src="@books.formats.imagejpeg" alt="...">
                <div class="card-body">
                    <h5 class="card-title">@books.title</h5>
                </div>
                <div class="d-flex justify-content-between align-items-center">
                    <div class="btn-group">
                        <a class="btn btn-primary stretched-link" asp-controller="Book" asp-action="Details" asp-route-id="@books.id">Details</a>
                        <button type="button" class="btn btn-sm btn-outline-secondary">Add</button>
                    </div>
                </div>
                <br />
            </div>
        }
    </div>
</div>
public class BookRepository
    {
        private static List<Result> results;
        public static Result GetBooksById(int id)
        {
            return results.FirstOrDefault(b => b.id == id); // PROBLEM HERE 
        }
    }
public IActionResult Details(int id)
        {
            return View(BookRepository.GetBooksById(id));
        }
@model Result

<div class="card mb-3">
    <div class="card-body">
        <div class="row no-gutters">
            <div class="col-md-3">
                <img src="@Model.formats.imagejpeg" class="card-img">
            </div>
            <div class="col-md-9">

                <h5 class="card-title">@Model.title</h5>
                <p class="card-text">@Model.subjects</p>
                <p class="card-text">
                    <small class="text-muted">3 days ago</small>
                </p>

            </div>
        </div>
    </div>
</div>

我写了一个图书仓库类来帮助我,图书的id在一个按钮的帮助下从那里来,但是我的方法返回了一个空值。
It gives an error here, it returns null.

dldeef67

dldeef671#

你的private static List<Result> results;是空的。你应该在某个地方初始化它。或者加载数据到它里面,不管你的意图是什么。至少这是错误所指示的,FirstOrDefault是一个在集合上调用的扩展方法,但是如果所述集合是空的,它就会失败。而且你的代码不会显示它是否在某个地方初始化。

results = new List<Result> { new Result(...) }

相关问题