2012-05-23 3 views
1

Я написал собственный поставщик метаданных, наследуя его от DataAnnotationsModelMetadataProvider. Пользовательский поставщик содержит переопределенные реализации для GetMetadataforProperty и CreateMetadata.custom modelmetadataprovider для JsonResult

Когда я возвращаю ActionResult из моего метода класса контроллера, выполняется код для моего собственного поставщика метаданных. Однако, если я вернусь JsonResult, код поставщика метаданных не попадет.

Я что-то упустил? Любая помощь будет оценена по достоинству.

ответ

0

Это правильное поведение структуры MVC, и то, что вы просите, на самом деле не имеет смысла.

Когда вы возвращаете JsonResult с вашего контроллера, вы просто передаете MVC для отправки форматированного содержимого JSON непосредственно в ответ. Ваш метод действий с контроллерами уже сделал все, что нужно на данный момент.

Однако, если вы вернете ActionResult типа ViewResult, то необходима дополнительная обработка, которая должна быть выполнена до того, как все будет записано в ответ. Информация, представленная в ваших метаданных, необходима при визуализации представлений, чтобы инфраструктура вызывала поставщика метаданных, чтобы предоставить ваши представления необходимой информации.

Так что причина, по которой ваш поставщик метаданных не вызывается при возврате JsonResult, объясняется тем, что он не требуется.

Я бы предложил посмотреть сообщение this, в котором приведена ссылка на схему трубопровода MVC, которая поможет вам понять, что происходит.

 Смежные вопросы

  • Нет связанных вопросов^_^