繁体   English   中英

类型对象的.net CORE视图模型属性未绑定

[英].net CORE view model property of type object does not bind

我有一个将从.net框架移植到.net核心的MVC Web应用程序。 该应用程序的一部分具有一个视图模型,该视图模型具有许多属性,其中之一是“对象”类型。

在.net Framework中,当我发布此视图模型数据时,控制器可以毫无问题地接收它。 但是,在.net CORE中,除作为对象的属性外,所有属性均包含其期望值。

如果我将类型更改为字符串,则可以正常工作(但是,这意味着,如果该值曾经是一个int(例如),它将是int的字符串表示形式)。

有谁知道我如何获取视图模型属性的值,这些视图模型属性是可以工作的对象类型,或者如果Core不支持此功能?

我真的不觉得这会工作。

模型绑定使用反射将请求数据,路由数据和查询字符串映射到您的操作方法的参数中。

请求数据实际上是所有字符串数据,因此defaultmodelbinder可以通过检查字符串是否可以成功转换为int或bool来将请求映射到任何简单的值类型,例如字符串,整数或布尔值。

然后,也可以使用相同的方法来映射包含简单值类型(例如字符串和整数)的复杂类型(例如Customer对象)。 这样的复杂类型的示例如下所示:

public class Customer
{
     public string Name {get;set} 
     public bool IsLongTermCustomer {get;set;}
}

因为defaultmodelbinder使用反射,所以我真的看不到如何知道如何映射到“ object”类型的属性,该属性可以是任何东西。

一个对象可能是Customer,int,string等,因此,无论使用什么版本的MVC,我都认为这将失败,因为我看不到defaultmodelbinder如何知道数据是否可以移植到对象数据类型中。 这是有关MVC核心中的模型绑定及其工作方式的详细文章。

https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-2.2

作为一项额外的检查,我还将查看您是否在较旧的应用程序中运行了mvc默认模型绑定程序,以及是否有人没有使用自定义模型绑定程序,这可能会使这种绑定发生在旧版应用程序中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM