Posso registrar um fichário de modelo personalizado em algum lugar que não seja global.asax?
-
27-09-2019 - |
Pergunta
Seria útil limitar o escopo de um fichário personalizado para apenas um método de ação do controlador específico ou todo o seu controlador. Hanselman escreveu uma frase que implicava locais alternativos para o registro de fichário personalizado, mas nunca parecia terminar o pensamento:
Você pode qualquer Coloque este fichário de modelo personalizado encarregado de todos os seus dados, registrando -o no global.asax
É possível tornar esses registros em um escopo menor do sistema controlador? Em caso afirmativo, há algum motivo para evitar fazê -lo fora do global.ASAX MVCAPLICAÇÃO (por exemplo, razões de desempenho)?
Solução
Quando estava fechando as guias, abri para esta pergunta que não havia chegado antes de desistir, encontrei alguém com uma resposta. Você pode atribuir um ModelBinderAttribute
Para os seus modelos de visualização:
[ModelBinder(typeof(SomeEditorModelModelBinder))]
public class SomeEditorModel {
// display model goes here
}
public class SomeEditorModelModelBinder : DefaultModelBinder {
// custom model binder for said model goes here
}
Embora não fosse exatamente o que eu estava procurando, é ainda mais específico do que registrá -lo para um método controlador ou controlador.
Atualizar
Graças ao comentário de Levi apontando uma solução muito melhor. Se você está consumindo o objeto com um fichário de modelo personalizado em um método de ação MVC diretamente, você pode simplesmente decorar o parâmetro desse método com o ModelBinder
propriedade.
public ActionResult SomeMethod([ModelBinder(typeof(SomeEditorModelBinder))]SomeEditorModel model) { ... }