Posso registrar um fichário de modelo personalizado em algum lugar que não seja global.asax?

StackOverflow https://stackoverflow.com/questions/3041242

  •  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)?

Foi útil?

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) { ... }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top