VB.net匿名类型具有来自AJAX调用的不正确的属性外壳

时间:2015-01-14 16:19:27

标签: ajax json vb.net

我们注意到,有时从AJAX调用结果到控制器操作,JSON结果的情况不正确。如果我们重建我们的解决方案并尝试完全相同的调用,则返回的案例实际上会发生变化在下面的例子中,密钥的情况已经纠正了一年多,直到现在它决定根据一些看似随意的情况随机改变。

Casing issue

正如您在上图中所看到的,JSON结果的关键是小写“成功”。但是,当我在Chrome控制台中查看结果时,它是一个大写的“成功”。这导致我们的JavaScript失败,因为它正在检查小写版本。

造成这种情况的原因是什么?更重要的是,我们如何阻止这种情况?

1 个答案:

答案 0 :(得分:5)

vb.net 不区分大小写,而<{1>} 区分大小写。这意味着编译器将为以下每种匿名类型仅生成一个类(来自第一个实例):

C#
  

VB $ AnonymousType_0&#39; 1个
  VB $ AnonymousType_0&#39; 1个
  VB $ AnonymousType_0&#39; 1

以下是编译回vb.net时编译代码的样子:

Dim a = New With {.success = True} 'Compiler generate a class based on this type
Dim b = New With {.Success = True} 'Same type as `a`
Dim c = New With {.sUcCeSs = True} 'Same type as `a`

Debug.WriteLine(a.GetType().Name)
Debug.WriteLine(b.GetType().Name)
Debug.WriteLine(c.GetType().Name)