将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'
}
我知道如何绕过反射,但是在重新发明轮子之前,我想知道是否有任何库已经做了这些事情。
这可能是您想要的: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