1

我通过从DataAnnotationsModelMetadataProvider. GetMetadataforProperty自定义提供程序包含和的覆盖实现CreateMetadata

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

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

4

1 回答 1

0

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

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

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

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

我建议查看这篇文章,它提供了指向 MVC 管道图的链接,这将帮助您了解正在发生的事情。

于 2013-04-13T17:07:19.517 回答