Wie kann man Die Modell-Element, übergeben das Wörterbuch ist vom Typ Fehler?
Ich versuche zu laufen, meine erste ASP.NET MVC-Anwendung. Ich erstellte einen regler und anzeigen. Stammen die Daten aus der Datenbank. Allerdings, wenn das Projekt ausgeführt werden kann aber wenn ich versuche zu navigieren, Kunden-Seite bekomme ich folgende Fehlermeldung.
Den Modell-Element, übergeben das Wörterbuch ist vom Typ
'System.Sammlungen.Generisches.List`1[MvcApplication3.Modelle.Kunde],
aber dieses Wörterbuch erfordert ein modellelement des Typs
'MvcApplication3.Modelle.Kunden'.
Ich bin bisschen verwirrt hier, als Fehler sagt, es hat ersuchenden Modell geben.
Stack-trace ist
Stack Trace:
[InvalidOperationException: Das Modell-Element übergeben, in das Wörterbuch
ist der Typ
'System.Sammlungen.Generisches.Liste1[MvcApplication3.Models.Customer]',
1.SetModel(Object value) +585211
but this dictionary requires a model item of type
'MvcApplication3.Models.Customer'.]
System.Web.Mvc.ViewDataDictionary
System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary Wörterbuch)
+371-System.Web.Mvc.ViewPage1.SetViewData(ViewDataDictionary viewData) +48 System.Web.Mvc.WebFormView.RenderViewPage(ViewContext
1 Fortsetzung) +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
System.Web.Mvc -.<>c_DisplayClass1c.b_19()
+21 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext
controllerContext, IList1 filters, ActionResult actionResult) +177
1.Ende()
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 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult
asyncResult) +43
System.Web.Mvc -.<>c_DisplayClass1d.b_18(IAsyncResult
asyncResult) +14
System.Web.Mvc.Async.<>c_DisplayClass4.b_3(IAsyncResult
ar) +23 System.Web.Mvc.Async.WrappedAsyncResult1.End() +62
1.Ende() +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
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +47
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult
asyncResult) +10
System.Web.Mvc -.<>c_DisplayClass8.b_3(IAsyncResult
asyncResult) +25
System.Web.Mvc.Async.<>c_DisplayClass4.b_3(IAsyncResult
ar) +23 System.Web.Mvc.Async.WrappedAsyncResult`1.Ende() +62
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
+47 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult
Ergebnis) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
+9514812 System.Web.HttpApplication.ExecuteStep(IExecutionStep Schritt, Boolean& completedSynchronously) +155
Hier mein controller-code.
namespace MvcApplication3.Controllers
{
public class CustomerController : Controller
{
//
//GET: /Customer/
public ActionResult Index()
{
Models.NorthwindDataContext nwd = new Models.NorthwindDataContext();
return View(nwd.Customers.ToList());
}
}
}
Hier ist der Blick
<%@ 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>
Kann jemand mir einen Tipp geben um es zu beheben?
sieht für mich wie Sie übergeben, List<Kunde> habe aber @Modell-Kunden, nicht die Liste auf der Ansicht
Nur um zu sehen, ob das funktioniert, ersetzen Sie
nwd.Customers.ToList()
mit nwd.Customers.ToList().FirstOrDefault()
InformationsquelleAutor newday | 2014-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie versuchen, übergeben Sie eine Sammlung, um einen Blick, der entworfen ist, für ein einzelnes Objekt.
ändern Sie Ihre Ansicht Erklärung zu
Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication3.Models.Customer>>
RenderPartial
verwendet wird, und der zweite parameter istnull
, hat die Ausführung teilweise übernehmen dann das Modell aus der aufrufenden Seite?InformationsquelleAutor D Stanley
Was genau verwirrt dich? In Ihrer aspx-Datei, die Sie definiert haben, können Sie das Modell als ein Kunde, aber Sie übergeben eine Liste statt.
Erwartete Modell:
Ihre Daten:
Offensichtlich ein Missverhältnis.
InformationsquelleAutor walther
In Ihrem zugehörige view - (d.h. die
.cshtml
- Datei) Blick für die@model
Erklärung: dieActionResult
zurückgeben muss, die richtige Instanz der model-Klasse, z.B. wenn Sie definiert haben,dann Ihre ActionResult muss der Typ
Customer
.Möchtest du wieder eine Liste, daher müssen Sie definieren,
in der Ansicht.
InformationsquelleAutor Matt
Den Modell-Element, übergeben das Wörterbuch ist vom Typ
aber dieses Wörterbuch benötigt ein Modell-Element vom Typ
Type mismatch.
InformationsquelleAutor Matt Webber
Hatte ich dieses Problem und es war ein problem des Modells in der Ansicht. Ich hatte diesen code in mein MVC Projekt:
aber das Formular Anzeigen.cshtml hatte das falsche Modell:
Also habe ich es geändert:
InformationsquelleAutor nahuelmisc