Comment réparer L'élément de modèle adopté dans le dictionnaire est de type erreur?
Je suis en train de lancer mon premier ASP.NET application MVC. J'ai créé un cotroller et la vue. Les données sont prises à partir de la Base de données. Toutefois, lorsque le projet peut courir, mais quand j'essaie de naviguer à la Clientèle page-je obtenir de l'erreur ci-dessous.
L'élément de modèle adopté dans le dictionnaire est de type
'Système.Les Collections.Génériques.Liste`1[MvcApplication3.Modèles.Client]',
mais ce dictionnaire nécessite un élément de modèle de type
'MvcApplication3.Modèles.Client".
Je suis un peu confus ici, comme d'erreur dit qu'il a demander le type de modèle.
Trace de la pile est
Trace De La Pile:
[InvalidOperationException: L'élément de modèle adopté dans le dictionnaire
est de type
'Système.Les Collections.Génériques.Liste1[MvcApplication3.Models.Customer]',
1.SetModel(la valeur de l'Objet) +585211
but this dictionary requires a model item of type
'MvcApplication3.Models.Customer'.]
System.Web.Mvc.ViewDataDictionary
Système.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionnaire)
+371 Système.Web.Mvc.ViewPage1.SetViewData(ViewDataDictionary viewData) +48 System.Web.Mvc.WebFormView.RenderViewPage(ViewContext
1 suite) +242
context, ViewPage page) +73
System.Web.Mvc.WebFormView.RenderView(ViewContext viewContext,
TextWriter writer, Object instance) +38
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext
viewContext, TextWriter writer) +115
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
+295 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext
controllerContext, ActionResult actionResult) +13
System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
+23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter
filter, ResultExecutingContext preContext, Func
Système.Web.Mvc.<>c_DisplayClass1c.b_19()
+21 Système.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext
controllerContext, IList1 filters, ActionResult actionResult) +177
1.Fin (la)
System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20()
+89 System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult
asyncResult) +102 System.Web.Mvc.Async.WrappedAsyncResult
+57 Système.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult
asyncResult) +43
Système.Web.Mvc.<>c_DisplayClass1d.b_18(IAsyncResult
asyncResult) +14
Système.Web.Mvc.Async.<>c_DisplayClass4.b_3(IAsyncResult
ar) +23 Système.Web.Mvc.Async.WrappedAsyncResult1.End() +62
1.Fin() +62
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +57
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult
ar) +23 System.Web.Mvc.Async.WrappedAsyncResult
Système.Web.Mvc.Le contrôleur.EndExecute(IAsyncResult asyncResult) +47
Système.Web.Mvc.Le contrôleur.Système.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult
asyncResult) +10
Système.Web.Mvc.<>c_DisplayClass8.b_3(IAsyncResult
asyncResult) +25
Système.Web.Mvc.Async.<>c_DisplayClass4.b_3(IAsyncResult
ar) +23 Système.Web.Mvc.Async.WrappedAsyncResult`1.Fin() +62
Système.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
+47 Système.Web.Mvc.MvcHandler.Système.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult
le résultat) +9
Système.Web.CallHandlerExecutionStep.Système.Web.HttpApplication.IExecutionStep.Execute()
+9514812 Système.Web.HttpApplication.ExecuteStep(IExecutionStep étape, Boolean& completedSynchronously) +155
Voici mon code du contrôleur.
namespace MvcApplication3.Controllers
{
public class CustomerController : Controller
{
//
//GET: /Customer/
public ActionResult Index()
{
Models.NorthwindDataContext nwd = new Models.NorthwindDataContext();
return View(nwd.Customers.ToList());
}
}
}
Ici est le point de vue
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication3.Models.Customer>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="FeaturedContent" runat="server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="ScriptsSection" runat="server">
</asp:Content>
Quelqu'un peut-il me donner une astuce pour résoudre ce problème?
me ressemble vous êtes de passage à une Liste<Client> mais avez - @modèle de client, pas de liste sur la vue
Juste pour voir si cela fonctionne, remplacer
nwd.Customers.ToList()
avec nwd.Customers.ToList().FirstOrDefault()
OriginalL'auteur newday | 2014-01-31
Vous devez vous connecter pour publier un commentaire.
Vous essayez de passer un collection d'un point de vue qui est conçu pour un seul objet.
changer votre point de vue déclaration de
Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication3.Models.Customer>>
RenderPartial
est utilisé, et le second paramètre estnull
, l'exécution partielle de considérer que le modèle de la mise en page?OriginalL'auteur D Stanley
Qu'est-ce exactement vous trouble? Dans votre fichier aspx vous avez défini le modèle en tant que client, mais vous passer d'une liste à la place.
De modèle:
Vos données:
De toute évidence une incompatibilité.
OriginalL'auteur walther
Dans votre liées vue (c'est à dire la
.cshtml
fichier) regardez pour l'@model
déclaration: leActionResult
doit renvoyer le droit d'instance de la classe du modèle, par exemple, si vous avez définialors votre ActionResult doit être de type
Customer
.Vous voulez retourner une liste, par conséquent, vous devez définir
dans la vue.
OriginalL'auteur Matt
L'élément de modèle adopté dans le dictionnaire est de type
mais ce dictionnaire nécessite un élément de modèle de type
Incompatibilité de Type.
OriginalL'auteur Matt Webber
J'ai eu ce problème et c'était un problème du modèle de la vue. J'ai eu ce code dans mon projet MVC:
mais le point de Vue de la Forme.cshtml avait un mauvais modèle:
Donc je l'ai changé pour:
OriginalL'auteur nahuelmisc