【发布时间】:2018-07-20 07:35:10
【问题描述】:
我有这个代码
if ($("#ProgramMode").val() == "Edit")
{
alert("@ViewBag.ProgramMode");
@**@obj.dataModel = {
data: JSON.parse("@Model.ClientDeds".replace(/"/g, '"')),
location: "remote",
sorting: "local",
sortIndx: "ReferralTypeID",
sortDir: "down"
};
}
当 $("#ProgramMode").val() 被评估为“编辑”时,它一切正常,因为 “@Model.ClientDeds”不为空。
但是,当 $("#ProgramMode").val() 被评估为 "Add" 时,语句:
JSON.parse("@Model.ClientDeds".replace(/"/g, '"'))
由于“@Model”为空,因此引发 NullReferenceException。 如果我删除声明
JSON.parse("@Model.ClientDeds".replace(/"/g, '"'))
并将其替换为 [] 或 NUll。它有效
这不应该发生,因为 if 语句被评估为 false,但解释器似乎检查了服务器返回的元素的值,对吗?解决办法是什么?
我检查了 if 语句在检查器中的评估是否正确。
注意:我通过更新 Create() 操作方法解决了这个问题,并将返回类型从:
return view()
到
return view ("Create",new MyObject());
但仍然需要知道它为什么解析它,如果它是假的,在 if 事件中
【问题讨论】:
-
将
@Model.ClientDeds空值检查(如果Model具有空值,则默认赋值)放在另一个单独的语句中,然后如果解析器结果存在,您可以将其作为JSON.parse参数传递。