【问题标题】:Can I return json data from my MVC program to my view using a class?我可以使用类将 json 数据从我的 MVC 程序返回到我的视图吗?
【发布时间】:2012-09-16 13:02:13
【问题描述】:

我有以下代码:

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 类之类的东西?

【问题讨论】:

  • 发布您在客户端收到的 JSON

标签: c# javascript asp.net-mvc json asp.net-mvc-3


【解决方案1】:

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

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

考虑:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您可以将自定义视图模型(它只是一个 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 时验证结构。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        • 2019-08-11
        • 2010-09-18
        • 2019-03-30
        • 2017-03-27
        • 1970-01-01
        相关资源
        最近更新 更多