将c#类渲染为javascript

本文关键字:javascript | 更新日期: 2023-09-27 18:13:35

我正在寻找一种方法来渲染c#类对象到javascript。例如这个类定义:

public class Foo
{ 
   public string Bar1 { get; set; }
   public string Bar2 { get; set; }
}

应该呈现(类Foo的对象填充值)为:

foo: 
{
    bar1: 'bar1value',
    bar2: 'bar2value'
}

我知道如何绕过反射,但是在重新发明轮子之前,我想知道是否有任何库已经做了这些事情。

将c#类渲染为javascript

这可能是您想要的:http://json.codeplex.com/

还有一个例子:http://james.newtonking.com/projects/json/help/

如果我没记错的话,JSON要求键名加引号(虽然可能可以容忍缺少引号),但我不确定Javascript是否适用,所以我用下面的HTML测试了它,它似乎在Chrome、IE和Firefox中都可用。

<html>
<body>
    <script type="text/javascript">
        o = { "a":1, "b":2 };
        alert(o.a +" " +o.b) ; 
    </script>
</body>
</html>

希望您能够直接使用这种语法(RFC 4627说JSON是Javascript的一个子集)。

可以将对象序列化为JSON

在这里看到我的答案:有什么方法将对象从c#代码传递到javascript吗?

您可能试图通过post将c#对象传递给视图。

[HttpPost]
public JsonResult GetDataController(
    string param1,
    string param2) 
{
    var myFoo = new Foo
    {
        Bar1 = "Param1 is: " + param1,
        Bar2 = "Param2 is: " + param2
    };
    return Json(myFoo);
}

现在,在您的视图中,通过ajax请求对象:

$.ajax({
    type: 'POST',
    datetype: 'json',
    url: '@Url.Action("GetDataController")',
    data: {
        param1: "line1",
        param2: "line2"
    },
    success: function (data, textStatus, xhr) {
        alert("I've received this JSOn object:'n'n" + data);
    },
    error: function (xhr, textStatus, errorThrow) {
        alert("Error while requesting JSON");
    }
 Dim RegisteredUsers As New List(Of Person)()
        RegisteredUsers.Add(New Person With {.PersonID = 1, .Name = "Bryon Hetrick", .Registered = True})
        RegisteredUsers.Add(New Person With {.PersonID = 2, .Name = "Nicole Wilcox", .Registered = True})
        RegisteredUsers.Add(New Person With {.PersonID = 3, .Name = "Adrian Martinson", .Registered = False})
        RegisteredUsers.Add(New Person With {.PersonID = 4, .Name = "Nora Osborn", .Registered = False})
    Dim serializer As New JavaScriptSerializer()
    Dim serializedResult = serializer.Serialize(RegisteredUsers)
    ' Produces string value of: 
    ' [ 
    '     {"PersonID":1,"Name":"Bryon Hetrick","Registered":true}, 
    '     {"PersonID":2,"Name":"Nicole Wilcox","Registered":true}, 
    '     {"PersonID":3,"Name":"Adrian Martinson","Registered":false}, 
    '     {"PersonID":4,"Name":"Nora Osborn","Registered":false} 
    ' ] 
    Dim deserializedResult = serializer.Deserialize(Of List(Of Person))(serializedResult)
    ' Produces List with 4 Person objects