如何将 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 对象?的主要内容,如果未能解决你的问题,请参考以下文章
C# ASP.net MVC Ajax MySQL DATATABLES 列搜索无法将搜索值传递给控制器
如何将参数传递给 jQuery document.ready() 函数(ASP.NET MVC、C#)