ASP.Net MVC中JQuery无法读取ViewModel的ServiceCenter属性问题
解决"RIC is not defined" ReferenceError问题
问题根源很明确:你把字符串类型的@Model.ServiceCenter直接输出到JavaScript代码里时,没有给它加字符串引号。
比如你的Model里ServiceCenter值是RIC,渲染后的JS代码会变成:
terminalId: RIC
JavaScript会把RIC当成一个变量去查找,但你根本没定义过这个变量,所以就抛出了RIC is not defined的错误。而你硬编码'RIC'时,是标准的字符串字面量,JS能正确识别。
给你两个解决办法:
- 直接给属性值加单引号/双引号:
function additionalData() { return { employeeId: @Model.EmpId, terminalId: '@Model.ServiceCenter' } } - 更安全的方式是用框架自带的JSON序列化方法(避免特殊字符导致的语法错误):
ASP.NET MVC用Json.Encode:
ASP.NET Core用terminalId: @Html.Raw(Json.Encode(Model.ServiceCenter))Json.Serialize:terminalId: @Json.Serialize(Model.ServiceCenter)
这样渲染后的代码里terminalId的值会是带引号的字符串,JS就不会把它当成未定义的变量了。
内容的提问来源于stack exchange,提问作者Jacob R
相关产品推荐
相关产品推荐

