在 JavaScript 中使用空 c# 模型

本文关键字:模型 JavaScript | 更新日期: 2024-11-07 23:19:15

我正在尝试在我的脚本中使用来自 Razor 的视图模型。问题是,有时,由 EF 生成的具有循环值的复杂模型为空。

var skill = @Model.Skill1 != null ? "@Model.Skill1.SkillName" : "";

当 @Model.Skill1 不为空时,我可以使用 @Model.Skill1.SkillName。但如果 @Model.Skill1 为空,则结果为

Object reference not set to an instance of an object.

并且页面甚至没有呈现。

似乎无法在代码中写入@Model.Skill1.SkillName,即使未触发访问属性SkillName的条件也是如此。

所以我尝试将我的对象转换为 Json 对象,但这次我遇到了循环值生成问题。

有什么想法或方法可以绕过这个问题吗?

在 JavaScript 中使用空 c# 模型

你正在混合语言。 如果这是在你的 JavaScript 块中:

var skill = @Model.Skill1 != null ? "@Model.Skill1.SkillName" : "";

然后,您有两个服务器端语句。 没有逻辑确定是否执行它们。 所以他们都执行,第二个是NullReferenceException.

基本上,您正在尝试向客户端发出 null 引用,以便客户端可以检查它是否为 null。 但是到那时,您已经尝试取消引用它,因此出现了错误。

在服务器端执行空检查,并将结果发送到客户端代码。 像这样:

var skill = '@(Model.Skill1 != null ? Model.Skill1.SkillName : "")';

在 Razor @() 中将值发出表达式包装在括号中意味着整个语句是服务器端代码,应生成单个发出值。