如何使用动态对象类创建 .net 核心 MVC 模型?
Posted
技术标签:
【中文标题】如何使用动态对象类创建 .net 核心 MVC 模型?【英文标题】:How create a .net core MVC Model using dynamic object class? 【发布时间】:2020-08-18 13:21:08 【问题描述】:我正在寻找一个代码示例来说明如何使用 C# 在 .net 核心 MVC 中创建模型类,其中该类具有动态属性。我的 API 接收到一个 http POST 请求,我正在为我的 API 的 HeadersModel 类中的每个 HTTP 标头创建一个属性。
我正在使用 .net core 3.1
namespace HttpsHeaders.Models
public class Headers : DynamicObject
//public int ID get; set;
//public string HeaderOne get; set;
//Instead of these properties, I want to add the properties dynamically
Dictionary<string, object> dictionary
= new Dictionary<string, object>();
如果有更好的动态对象解决方案,请在我学习.net core C#时告诉我。
编辑: 如何将动态对象序列化为 JSON 字符串?
我可以在此处找到有关如何创建动态对象的说明: https://docs.microsoft.com/en-us/dotnet/api/system.dynamic.dynamicobject?view=netcore-3.1
但是,我无法将 Headers 对象序列化为字符串 json。 这些指令不起作用,序列化后我得到一个空字符串。
C# json object for dynamic properties How to serialize a dynamic object to a JSON string in dotnet core?
dynamic dynObjectInstance = new Headers ();
dynObjectInstance.Foo = "Bar";
string resultJson = JsonConvert.SerializeObject(dynObjectInstance);
\\ this returns ""
\\ I was expecting to get “\”Foo\”:\”Bar\””
【问题讨论】:
【参考方案1】:我找到了一个比定义模型更好的解决方案,它使用的是 ExpandObject。
// ExpandoObject supports IDictionary so we can extend it like this
dynamic expando = new ExpandoObject();
var expandoDict = expando as IDictionary<string, object>;
if (expandoDict.ContainsKey(propertyName))
expandoDict[propertyName] = propertyValue;
else
expandoDict.Add(propertyName, propertyValue);
【讨论】:
以上是关于如何使用动态对象类创建 .net 核心 MVC 模型?的主要内容,如果未能解决你的问题,请参考以下文章
在 View .NET CORE MVC 中动态显示组件和数据