【问题标题】:Can I modify a dynamic property value from controller in .net MVC 5?我可以从 .net MVC 5 中的控制器修改动态属性值吗?
【发布时间】:2018-06-12 17:03:16
【问题描述】:

我正在使用 .Net MVC 和实体框架。 在我的模型类中,我有这两个属性:

public string Content { get; set; }

[NotMapped]
public dynamic DynamicContent { get { return Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(this.Content); } }

“内容”包含 JSON 字符串,DynamicContent 是基于 JSON 字符串的动态属性。

我可以修改动态属性的内容吗? 例如:我可以读取这样的值

动态内容.title

但是如何从控制器设置它的值? DynamicContent.title = "myvalue" 不起作用。

【问题讨论】:

  • 你的解决方案在三个方面存在问题:在实体对象中添加JSON序列化(表示层关注点),将实体对象传递给控制器​​以及dynamic的使用。从实体对象创建模型对象并使用标题属性对其进行扩展。在转换为模型对象期间,您可以处理动态对象创建的细节。我确定您的域问题不需要涉及dynamic 的解决方案。
  • 我创建了一个表单构建器,因此必须在运行时根据表单的字段和值构建模型。

标签: c# asp.net-mvc


【解决方案1】:

您应该能够只设置 Content 属性的值,因为这是您调用 get 方法时 DynamicContent 属性检索的值。

所以而不是:

DynamicContent.title = "myvalue"

你会打电话给:

Content = *the json representation of the content*

然而,这需要采用 JSON 格式,因为 DynamicContent getter 将其从 JSON 中反序列化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    相关资源
    最近更新 更多