这个问题在这里已有答案:
我想使用C#从我的SQL Server 2017中显示两个连接表。我跟着this YouTube video。当一切看起来都那么完美时,我得到了这个错误:
System.NullReferenceException'对象引用未设置为对象的实例。'
我发现这是因为我在表格中设置了null。
我知道我可以使用LEFT JOIN
来处理空值。但问题是我不知道如何在我的C#文件中包含SQL命令。
突出显示的错误行是:<td>@item.rule.Amount</td>
我认为我做错了的可疑部分是
public ActionResult Index()
{
db1 sd = new db1();
List<Group> groups = sd.Groups.ToList();
List<Rule> rule = sd.Rules.ToList();
List<RuleDesc> ruleDesc = sd.RuleDescs.ToList();
ViewData["jointtables"] = from g in groups
join r in rule on g.AcctNo equals r.AcctNo
into table1
from r in table1.DefaultIfEmpty()
select new Class1 { groups = g, rule = r};
return View(ViewData["joinedtables"]);
}
假设null字段是mynull然后它应该是:
bool isnull = dr.IsDBNull(dr.GetOrdinal("mynull"))
或者您可以在SQL查询中使用COALESCE()或IFNULL()
使用Razor View Engine在ASP.NET或.NET Core中的视图中显示值时,我建议您在nullable
类型上使用类似.GetValueOrDefault()的方法。
假设您的模型中的Amount
字段是以下类型:int?
double?
或float?
然后使用GetValueOrDefault()
方法。
例如:
<td>@item.rule.Amount.GetValueOrDefault()</td>
这将避免显示System.NullReferenceException 'Object reference not set to an instance of an object.'
的错误页面
我希望这有帮助。