我正在尝试在我的脚本中使用来自 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 块中:
var skill = @Model.Skill1 != null ? "@Model.Skill1.SkillName" : "";
然后,您有两个服务器端语句。 没有逻辑确定是否执行它们。 所以他们都执行,第二个是NullReferenceException
.
基本上,您正在尝试向客户端发出 null 引用,以便客户端可以检查它是否为 null。 但是到那时,您已经尝试取消引用它,因此出现了错误。
在服务器端执行空检查,并将结果发送到客户端代码。 像这样:
var skill = '@(Model.Skill1 != null ? Model.Skill1.SkillName : "")';
在 Razor @()
中将值发出表达式包装在括号中意味着整个语句是服务器端代码,应生成单个发出值。