尝试渲染 Razor 组件时出现 NullReferenceException

问题描述 投票:0回答:1

我在尝试渲染 Razor 组件时遇到问题,我得到一个

NullReferenceException

我有一个组件

NewsCard
,它代表一张简单的卡片,其中包含有关新闻条目的摘要:

@using Web.Backend.Models

@code {
    [Parameter]
    public News? NewsData { get; set; }
}

<a href="/news/@NewsData?.Id">
    <div class="news-card">
        <img src="@NewsData?.TitleImage.ResolveObjectUri()"/>
        <div class="news-card-data">
            <div class="news-card-header">
                <h3>@NewsData?.Title</h3>
                <div class="news-card-header-info">
                    <p class="news-card-posted-by">@string.Format("{0} {1}", NewsData?.PostedBy.LastName, NewsData.PostedBy.FirstName)</p>
                    <p class="news-card-posted-at">@NewsData?.PostedAt</p>
                </div>
            </div>
            <p>@NewsData?.Description</p>
        </div>
    </div>
</a>

我在其他组件中很好地使用了这个组件

<NewsCard NewsData="news"/>

但是当我尝试在这样的页面中使用这个组件时

<component type="typeof(NewsCard)" render-mode="ServerPrerendered" params-NewsData="news"/>

或者像这样

await Html.RenderComponentAsync<NewsCard>(RenderMode.ServerPrerendered, new { NewsData = news });

我得到一个

NullReferenceException
。为什么?当我在调试器中查看时,
news
变量有一个对象。

我试图理解为什么它不起作用,而且为什么我不能像在组件中一样使用相同的语法:

<NewsCard NewsData="news"/>

谢谢

c# asp.net .net razor
1个回答
0
投票

所以我已经弄清楚了,我忘记在从数据库检索的新闻中填充其他字段。我添加了这个:

foreach (News newsPost in news)
{
    dbContext.Entry(newsPost).Reference(p => p.PostedBy).Load();
    dbContext.Entry(newsPost).Reference(p => p.TitleImage).Load();
}

它解决了一个问题。

© www.soinside.com 2019 - 2024. All rights reserved.