【发布时间】:2019-12-19 00:39:42
【问题描述】:
我对这个 .Net Core 完全感到困惑,并提前感谢您的帮助。
该网站与我的本地计算机完美配合。我使用的是完全相同的数据库和相同的代码。
但是当我将网站部署到托管公司服务器时。不知何故不断得到 SqlNullValueException: Data is Null。不能对 Null 值调用此方法或属性。
@model FeedbackViewModel
@if (Model.Feedbacks != null)
{
<p>Number of item = @Model.Feedbacks.Count()</p>
}
这是一个非常简化的代码版本。 有谁知道为什么如果模型不为空,但是当我要求显示项目数时,由于空值异常而失败?
public class FeedbackViewModel
{
public IEnumerable<FeedbackModel> Feedbacks { get; set; }
}
//控制器
return View(new FeedbackViewModel
{
Feedbacks = feedbackRepository.Feedbacks.Where(c => c.FeedbackStatus == true)
});
【问题讨论】:
-
您展示了一个视图和视图模型。但是Controller中会发生SqlNullValueException。
-
嗨,亨克。我将使用控制代码编辑问题,但是。基本上上面的代码说如果它为空,不要做任何事情。但如果它不为空,则显示项目数。为什么它不是空的,但是当涉及到 .count 时,它说空错误
-
可能是具体化问题?试试
Feedbacks = ...Where(c => c.FeedbackStatus).ToArray() -
@AliAzra 你确定它不为空吗?当视图被渲染时,
feedbackRepository可能已经是 GCd。通过返回IQueryable<T>而不是实际结果,您可以将查询的执行延迟到呈现时间。如果您使用 EF Core,请使用ToListAsync(),否则使用ToList()在返回数据之前检索数据 -
@AliAzra 如果您发布包含调用堆栈的完整异常文本,我怀疑我们会看到从视图到存储库的一系列调用。
标签: c# json asp.net-core .net-core asp.net-core-mvc