70 votes

L'élément de modèle adopté dans le dictionnaire est de type ‘mvc.Modèles.ModelA "mais ce dictionnaire nécessite un élément de modèle de type" mvc.Modèles.ModelB‘

J'ai cette fâcheuse erreur dans certains de mes builds.

Il n'y a pas d'erreur dans le projet, parce que si j'ai de construire à nouveau, le problème disparaît. Le message apparaît uniquement lorsque le site est déployé sur un Serveur Windows 2008.

J'ai d'abord pensé qu'il pourrait être un problème avec des fichiers temporaires, mais ce n'est pas le cas. J'ai déployé la construction d'un web différent et que l'erreur s'affiche toujours.

L'erreur s'affiche au hasard sur actions du site. La plupart du temps, les builds sont ok, mais chaque 3ème ou 4ème construire produit des erreurs d'exécution.

Je construis à l'aide d'un WebdeploymentProject en mode release. Les vues sont précompilés.

Il n'est pas Dans ASP.NET MVC je rencontre un type incorrect erreur lors du rendu d'une page avec le bon tapé objet, parce que la vision est totalement différente des noms.

Comment je peut corriger ce problème ou comment je peux obtenir de l'aide pour cela?

Voici mon WebDeploymentProject

    <!-- 
      Microsoft Visual Studio 2008 Web Deployment Project 
      http://go.microsoft.com/fwlink/?LinkID=104956

    -->
    <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
        <ProductVersion>9.0.21022</ProductVersion>
        <SchemaVersion>2.0</SchemaVersion>
        <ProjectGuid>{E5E14CEB-0BCD-4203-9A5A-34ABA9C717EA}</ProjectGuid>
        <SourceWebPhysicalPath>..\B2CWeb</SourceWebPhysicalPath>
        <SourceWebProject>{3E632DB6-6DB3-4BD0-8CCA-12DE67165B48}|B2CWeb\B2CWeb.csproj</SourceWebProject>
        <SourceWebVirtualPath>/B2CWeb.csproj</SourceWebVirtualPath>
        <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <DebugSymbols>true</DebugSymbols>
        <OutputPath>.\Debug</OutputPath>
        <EnableUpdateable>false</EnableUpdateable>
        <UseMerge>true</UseMerge>
        <SingleAssemblyName>B2CWeb_Build</SingleAssemblyName>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        <DebugSymbols>false</DebugSymbols>
        <OutputPath>..\B2CWeb_Deploy\</OutputPath>
        <EnableUpdateable>false</EnableUpdateable>
        <UseMerge>true</UseMerge>
        <SingleAssemblyName>B2C_Web</SingleAssemblyName>
        <ContentAssemblyName>
        </ContentAssemblyName>
        <DeleteAppCodeCompiledFiles>false</DeleteAppCodeCompiledFiles>
      </PropertyGroup>
      <ItemGroup>
      </ItemGroup>
      <Import Project="$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v9.0\Microsoft.WebDeployment.targets" />
      <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
           Other similar extension points exist, see Microsoft.WebDeployment.targets.
      <Target Name="BeforeBuild">
      </Target>
      <Target Name="BeforeMerge">
      </Target>
      <Target Name="AfterMerge">
      </Target>
      <Target Name="AfterBuild">
      </Target>
      -->
    </Project>

MODIFIER

Après quelques mois de ce problème disparu. Je n'ai pas eu de problèmes depuis plus de 1 an maintenant. Je suppose que le problème va frapper à nouveau, quand personne ne s'y attend.

EDIT 2

... depuis plus de 2 ans maintenant. Je suis un chanceux mec!

175voto

Maslow Points 7268

Même si les types de match, vous pouvez obtenir cette erreur, si une valeur null est passé à une vue partielle, la solution a été d'appeler RenderPartial comme ceci: helper.RenderPartial("~/Views/Player/PlayerName.ascx", player,new ViewDataDictionary()); avec une vue vide dictionnaire de données, peut-être que s'applique ici aussi? Pour référence, j'ai trouvé cette solution:

http://stackoverflow.com/questions/650393/asp-net-mvc-renderpartial-with-null-model-gets-passed-the-wrong-type

14voto

Andrei Mikhalevich Points 6372

Pour MVC Partiels: modèle NUL est passée à l'intérieur!!!

@Html.Partial("PartialView", model: Model)

7voto

Neil T. Points 2393

Cette erreur peut se produire (et) quand il y a un décalage entre les données que la méthode d'action du contrôleur est de fournir à la vue et le type de données que la vue est attend. Ce n'est normalement pas apparaître comme une erreur de build, même avec précompilés points de vue.

Par exemple, si j'ai une méthode...

public ActionResult Create()
{
    // Do something
    return View(new CustomerCreateViewModel());
}

...et une vue de Créer un attribut de la Page...

<%@ Page ... Inherits="System.Web.Mvc.ViewPage<CustomerDetailsViewModel>" %>

...cela va compiler sans erreur. Cependant, quand je l'appelle l'action de création, je vais obtenir un jaune d'écran, parce que l'action de création de la méthode est de lancer des données de même type et de la vue s'attend à des données de type différent. Vous pouvez vérifier que vos types de correspondance des...

3voto

Rune Points 4759

Êtes-vous absolument sûr que cela n'a rien à voir avec la transmission des données à la vue? Êtes-vous d'effectuer une reconstruction complète à chaque fois?

Ces erreurs se produisent généralement en raison d'une vue partielle essaie d'utiliser le modèle de vue adopté pour la ViewPage lorsque le modèle de vue adopté pour la vue partielle, est nulle. Je me rends compte que tu sous-entends que l'erreur est en quelque sorte causé par le processus de construction, mais je ne vois pas comment cela serait possible. Se pourrait-il que le site déployé utilise une autre base de données que le site que vous exécutez sur votre machine de développement, et pourrait les données (ou de l'absence de données) dans la base de données en être la cause du problème?

2voto

svinto Points 8601

Faire construire déclencher des avertissements ou des erreurs?

Avez-vous vos dépendances mettre en place correctement? Par exemple. points de vue selon les modèles. Construire des figures dans ce, afin de compiler des choses en regardant les dépendances spécifiées. Par exemple. si vous modifiez un modèle et la vue est réalisée avant le modèle que vous attirer des ennuis...

Le faire disparaître si vous ne compilez pas vues?

Aussi faire de votre point de vue hériter System.Web.Mvc.ViewPage ou System.Web.Mvc.ViewPage<T> où T est votre modèle?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X