如何将 C# 属性指定给 ASP.NET MVC 中的 Json 对象?

Posted

技术标签:

【中文标题】如何将 C# 属性指定给 ASP.NET MVC 中的 Json 对象?【英文标题】:How to specific C# property to Json object in ASP.NET MVC? 【发布时间】:2019-08-26 02:39:19 【问题描述】: ++ 模型 公共类产品 公共 int ProductId 获取;放; 公共字符串产品名称 获取;放; 公共数据表 dt = 新数据表(); 公共类别类别 = 新类别(); ++控制器 公共 JsonResult 索引() 产品 dto = new Product(); dto.ProductId = 1; dto.ProductName = "可口可乐"; 返回 Json(dto, JsonRequestBehavior.AllowGet);

如何具体Json对象,我的意思是只需要ProductId,ProductName等不需要Json对象。

++想要 “产品编号”:1, “产品名称”:“可口可乐”

【问题讨论】:

一种可能的方法是返回匿名对象,例如return Json(new ProductId = dto.ProductId, ... ); Only serialize some specific properties of a class?的可能重复 【参考方案1】:

您可以在序列化或反序列化时对要从对象中排除的每个属性使用System.Web.Script.Serialization 中的[ScriptIgnore] 属性:

  using System.Web.Script.Serialization;

  public class Product
        public int ProductId  get; set; 
        public string ProductName  get; set; 

        [ScriptIgnore]
        public DataTable dt = new DataTable();
        [ScriptIgnore]
        public Category Category = new Category();
    

【讨论】:

你能告诉我关于控制器的事情吗? 控制器没问题,不需要做任何改动。 System.Web.Script.Serialization 尝试[ScriptIgnore] 而不是[JsonIgnore],让我知道它正在工作。 使用 [ScriptIgnore] 而不是 [JsonIgnore] 它正在工作。谢谢。 很高兴它有帮助。而且由于您使用的是 javascriptSerializer ,因此 [JsonIgnore] 对您不起作用。【参考方案2】:

在同一个类中,创建两个返回布尔值的函数,如下所示:

 public bool ShouldSerializedt()
 
      return false;
 

 public bool ShouldSerializeCategory()
 
      return false;
 

函数返回布尔值。它的名字是ShouldSerialize<<PropertyName>>,boolean 的返回类型控制序列化行为

【讨论】:

我不懂,我是初学者。 在您定义 ProductId 、 ProductName 等属性的同一个 Product 类中,定义我提到的函数。检查两个函数的名称。名称以“ShouldSerialize”开头,以“dt”或“Category”结尾,它们是不应序列化的属性的名称。如果此类函数返回 false,则相应的属性将不会被序列化。【参考方案3】:

最好使用C#序列化机制。出于这种“有限”序列化的目的,您可能需要单独的类(如果您希望在其他场景中序列化这些属性),但应该这样做。看看这里: How to exclude property from Json Serialization

【讨论】:

【参考方案4】:

用[JsonIgnore]注释要排除的字段

【讨论】:

我已经试过了 [JsonIgnore] 不行。但使用 [ScriptIgnore] 是可行的。从上面回答。

以上是关于如何将 C# 属性指定给 ASP.NET MVC 中的 Json 对象?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC & C#:将视图模型传递给控制器

C# ASP.net MVC Ajax MySQL DATATABLES 列搜索无法将搜索值传递给控制器

如何将参数传递给 jQuery document.ready() 函数(ASP.NET MVC、C#)

在 C# ASP .Net MVC 中编辑十进制模型属性

ASP.NET MVC C# - 显示类属性名称而不是 JSON 中的属性名称

asp.net MVC 控制器传实体类给指定页面