0

我有以下代码:

return Json(new {
    entity = vm.Entity,
    errors = e.Message,
    field = vm.Field
});

如果我键入以下内容,它仍然可以编译,但是当视图尝试读取数据时会失败。

return Json(new {
    wrongspellingofentity = vm.Entity,
    errors = e.Message,
    field = vm.Field
});

有什么方法可以使用某种类来返回我的数据,如果是这样,我将如何处理在客户端上读取它。有没有我可以用来接受数据的javascript类之类的东西?

4

3 回答 3

0

使用 Anonymouse 类型与使用类相同,因为编译器将匿名类型创建为类。

只需指定一个要转换为 JSON 的类就可以像现在一样工作,结果完全一样。

考虑:

return Json(new MyType{
     entity = vm.Entity,
     errors = e.Message
});
于 2012-09-16T13:06:46.707 回答
0

如果您担心更改服务器端的属性不会被客户端接收,那么使用 C# 类不会真正有帮助。JavaScript 本身不支持类,只要您传递有效的 JSON,就没有理由抱怨。

您可以从 C# 程序集生成 JavaScript 伪类,并且在加载 JSON 数据时,将生成的 JavaScript 对象转换为具有使丢失或不正确属性无效的机制的这些类之一。这在技术上是可行的,但不知道你的意图,我不知道我是否会建议在生成和解释 JSON 数据时过度自律。

于 2012-09-16T13:36:49.263 回答
0

您可以将自定义视图模型(它只是一个 POCO 类)发送给您的客户。

假设您有这样的课程

public class CustomerInfo
{
  public string Name { set;get;}
  public int Age { set;get;}
}

您可以像这样从您的 Action 方法返回它

public Actionresult GetCustomerInf()
{
 var cm=new CustomerInfo();
 cm.Name="Some Name";
 cm.Age=23;
 return Json(cm,JsonRequestBehaviour.AllowGet);
}

这将返回一个JSON这样的

{  "Name":"Some Name", "Age":"23" }

要从客户端 javascript 访问它,您可以使用getJSON方法。

$.getJSON("@Url.Action("GetCustomerInfo","YourController")",function(data){
  //now you can parse through the JSON result we received back
  alert(data.Name);
  alert(data.Age);
});

如果您从操作方法返回复杂类型,则可以获取 JSON 结构并更改解析结果的代码。

jsonlint.com是一个有用的站点,可帮助您在使用JSON.

于 2012-09-16T14:01:29.420 回答