我们注意到,有时从 AJAX 调用到 Controller 操作的结果来看,JSON 结果的大小写是不正确的。如果我们重建我们的解决方案并尝试完全相同的调用,返回的案例实际上会改变。在以下情况下, key 的情况已经正确了一年多,直到现在它决定根据一些看似随机的情况开始随机更改。



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

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

请您参考如下方法:

vb.netC# 不同,不区分大小写这是区分大小写的。这意味着编译器将为以下每个匿名类型只生成一个类(从第一个实例):

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) 

VB$AnonymousType_0'1
VB$AnonymousType_0'1
VB$AnonymousType_0'1



以下是编译回 vb.net 时编译后的代码的样子:
<DebuggerDisplay("success={success}"), CompilerGenerated> _ 
Friend NotInheritable Class VB$AnonymousType_0(Of T0) 
    ' Methods 
    <DebuggerNonUserCode> _ 
    Public Sub New(ByVal success As T0) 
        Me.$success = success 
    End Sub 
 
    <DebuggerNonUserCode> _ 
    Public Overrides Function ToString() As String 
        Dim builder As New StringBuilder 
        builder.Append("{ ") 
        builder.AppendFormat("{0} = {1} ", "success", Me.$success) 
        builder.Append("}") 
        Return builder.ToString 
    End Function 
 
    Public Property success As T0 
        <DebuggerNonUserCode> _ 
        Get 
            Return Me.$success 
        End Get 
        <DebuggerNonUserCode> _ 
        Set(ByVal Value As T0) 
            Me.$success = Value 
        End Set 
    End Property 
 
    Private $success As T0 
 
End Class 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!