【发布时间】:2019-06-15 03:38:58
【问题描述】:
我有一个 MVC Web 应用程序,我正在将其从 .net 框架移植到 .net 核心。应用程序的一部分有一个带有许多属性的视图模型,其中一个是“对象”类型。
在 .net 框架中,当我发布此视图模型数据时,控制器会毫无问题地接收它。但是,在 .net CORE 中,所有属性都包含它们的预期值,但对象除外。
如果我将类型更改为字符串大多数工作正常(但这意味着如果值曾经是一个 int(例如)它将是一个 int 的字符串表示形式)。
有人知道我如何获取作为对象类型的视图模型属性的值,或者 Core 不支持吗?
【问题讨论】:
-
您好,您确定这已绑定在您的旧版 mvc 应用程序中吗?模型绑定器使用高级反射来确定如何将请求数据映射到属性。对于“object”类型的属性,它无法判断这是一个复杂的对象,如 Customer 对象,还是一个字符串或 int,我看不出它如何正确映射它。我没有看到遗留 mvc 映射到“对象”类型的任何示例。我觉得这可能会在 asp.net mvc 和 core 中失败。
-
@Matt,这不是真的,默认模型绑定器支持使用对象转换为大多数基本类型,例如 Bool、Int String。 (我不认为 Date 有效,但我没有尝试过)
-
@Pseudo,我认为核心还没有支持,你应该编写一个自定义绑定器,它使用 json 序列化程序来解析对象
-
@johnny5 是的,先生,我同意。我认为你误读了我的评论。我只是说它不支持绑定到类型“object”,因为它无法判断它是复杂类型还是简单类型,如 int 或 string。我在下面写了完整的答案。谢谢
-
@Matt,谢谢,我试图澄清默认模型绑定器可以绑定到类型
Object,但仅适用于简单类型(Int,string bool),它可以弄清楚来自提供的 json。
标签: c# model-view-controller asp.net-core