Asp.net mvc JsonResult的自定义modelmetadataprovider

Asp.net mvc JsonResult的自定义modelmetadataprovider,asp.net-mvc,actionresult,modelmetadataprovider,Asp.net Mvc,Actionresult,Modelmetadataprovider,我通过从DataAnnotationsModelMetadataProvider继承来编写自定义元数据提供程序。自定义提供程序包含GetMetadataforProperty和CreateMata的重写实现 当我从控制器类方法返回ActionResult时,将执行自定义元数据提供程序的代码。但是,如果返回JsonResult,则不会命中自定义元数据提供程序代码 我错过什么了吗?任何帮助都将不胜感激。这是MVC框架的正确行为,您所要求的实际上没有意义 当您从控制器返回JsonResult时,您只是

我通过从DataAnnotationsModelMetadataProvider继承来编写自定义元数据提供程序。自定义提供程序包含GetMetadataforProperty和CreateMata的重写实现

当我从控制器类方法返回ActionResult时,将执行自定义元数据提供程序的代码。但是,如果返回JsonResult,则不会命中自定义元数据提供程序代码


我错过什么了吗?任何帮助都将不胜感激。

这是MVC框架的正确行为,您所要求的实际上没有意义

当您从控制器返回JsonResult时,您只是告诉MVC直接向响应发送JSON格式的内容。此时,控制器操作方法已经完成了所需的一切

但是,如果返回ViewResult类型的ActionResult,则在将任何内容写入响应之前,需要进行进一步的处理。呈现视图时需要提供元数据中的信息,因此框架将调用元数据提供程序为视图提供所需信息

因此,返回JsonResult时未调用元数据提供程序的原因是它不是必需的

我建议大家看看这篇文章,它提供了一个MVC管道图的链接,这将帮助你们理解正在发生的事情