Pergunta

Posso executar um aplicativo MVC 1 usando os conjuntos MVC 2 sem problemas? Entendo que algumas ferramentas de terceiros tiveram coisas quebradas no MVC 2, mas vamos supor que não estou usando essas outras ferramentas.

Foi útil?

Solução

Houve quebrando mudanças.

Se você deseja que um projeto 1.0 seja executado no 2.0, ele procura coisas em lugares diferentes; Então, você teria que migrar o aplicativo para 2.0..

Aqui estão as alterações que podem 'quebrar' (atual até a pré -visualização 2):

Mudanças na pré -visualização 2

Ajudantes agora retornam um MvcHtmlString objeto

Para aproveitar a nova sintaxe de expressão de codificação HTML no ASP.NET 4, o tipo de retorno dos ajudantes HTML é agora MvcHtmlString em vez de um string. Observe que, se você usar asp.net MVC 2 e os novos ajudantes com o ASP.NET 3.5, não poderá aproveitar a sintaxe codificadora de HTML; A nova sintaxe está disponível apenas quando você executa o ASP.NET MVC 2 no ASP.NET 4.

JsonResult agora responde apenas a solicitações de postagem HTTP

Para mitigar os ataques de seqüestro de JSON que têm o potencial de divulgação de informações, por padrão, o JsonResult A classe agora responde apenas ao HTTP POST solicitações de. Ajax recebe os métodos de ação que retornam um JsonResult O objeto deve ser alterado para usar o post. Se necessário, você pode substituir esse comportamento definindo o novo JsonRequestBehavior propriedade de JsonResult. Para obter mais informações sobre a exploração em potencial, consulte a postagem do blog JSON HEJACKING no blog de Phil Haack.

Modelo e ModelType Setters em ModelBindingContext são obsoletos

Um novo estabelecimento ModelMetadata a propriedade foi adicionada ao ModelBindingContext classe. A nova propriedade encapsula o modelo e o ModelType propriedades. Apesar de Model e ModelType As propriedades são obsoletas, para compatibilidade com versões anteriores, os getters da propriedade ainda funcionam; eles delegam para o ModelMetadata propriedade para recuperar o valor.

Alterações na pré -visualização 1

DefaultControllerFactory Alterações de classe quebram fábricas de controlador personalizado que derivam dela

Essa mudança afeta as fábricas de controladores personalizados que derivam de DefaultControllerFactory . A classe DefaultControllerFactory foi corrigida removendo o RequestContext Propriedade e, em vez disso GetControllerInstance e GetControllerType.

As fábricas de controlador personalizado são frequentemente usadas para fornecer injeção de dependência para aplicativos ASP.NET MVC.

Para atualizar as fábricas de controlador personalizado para oferecer suporte ao ASP.NET MVC 2, altere a assinatura ou assinaturas do método para corresponder às novas assinaturas e use o parâmetro de contexto de solicitação em vez da propriedade.

"Área" é agora uma chave de valor de rota reservada

A string "área" em valores de rota agora tem um significado especial no ASP.NET MVC, da mesma maneira que "controlador" e "ação". Uma implicação é que, se os ajudantes de HTML forem fornecidos com um dicionário de valor de rota contendo “área”, os ajudantes não anexarão mais a “área” na sequência de consultas.

Se você estiver usando o recurso de áreas, não use {area} como parte do seu URL de rota.

Questões conhecidas

A caixa de diálogo Adicionar Exibir lança uma caixa de seleção NullReferenceException Quando a caixa de seleção Visualização fortemente tímida é verificada, uma seleção de conteúdo de exibição diferente de "vazia" é selecionada e um nome de tipo de classe de dados de visualização é especificado para um tipo que existe. Ao especificar um nome de tipo, use a lista suspensa para selecionar o nome do tipo ou digite o nome do tipo totalmente qualificado. Para tipos que não existem, você deve definir o conteúdo da visualização para "esvaziar".

Outras dicas

Confira este documento. Você aprenderá sobre as mudanças de ruptura:http://go.microsoft.com/fwlink/?linkid=157072

Um Gotcha que me mordeu é que todos os campos de um modelo agora são sempre validados em uma postagem.

As mudanças são descritas por Brad Wilson aqui.

Postagem do blog de Steve Anderson descreve o problema e minha solução favorita (usando um validador personalizado).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top