Während der Ausführung der aktuellen Webanforderung wurde eine nicht behandelte Ausnahme generiert. Informationen über den Ursprung und den Ort der Ausnahme können anhand der folgenden Ausnahme-Stack-Trace identifiziert werden.ASP.NET MVC 5 Das an das Wörterbuch übergebene Modellelement ist vom Typ 'Name.Models.IndexViewModel', aber für dieses Wörterbuch ist ein Modellelement vom Typ
Stapelüberwachung:
InvalidOperationException: Das Element-Modell in das Wörterbuch übergeben vom Typ ‚Name.Models.IndexViewModel‘, aber dieses Wörterbuch ein Modell Artikel vom Typ erfordert ‚Name.Models.TwoViewModel ".
brauchte ich zwei verschiedene Ansichtsmodelle für diese Ansicht:
public class TwoViewModel
{
public IEnumerable<Name.Models.Project> Model1 { get; set; }
public IndexViewModel Model2 { get; set; }
}
EDIT:
Ich denke, dass ich gefunden habe, wo die Probleme kommen, die ManageController:
public async Task<ActionResult> Index(ManageMessageId? message)
{
var userId = User.Identity.GetUserId();
var userEmail = User.Identity.Name;
var user = UserManager.FindById(userId);
var model = new IndexViewModel
{
Email = user.Email,
FirstName = user.FirstName,
LastName = user.LastName,
City = user.City,
};
return View(model);
}
Ich habe versucht, das ViewModel des Modells zu ändern, Dinge wie
0 versuchenvar model = new TwoViewModel
{
Model2.Email = user.Email,
Model2.FirstName = uesr.FirstName,
Model2.LastName = user.LastName,
Model2.City = user.City,
};
return View(model);
Und intellisense erkennt das Model2, aber nicht den E-Mail-Teil. Ich denke, eine Verschachtelung wäre der Fall?
Ich habe diesen Ansatz versucht:
var model = new TwoViewModel
{
Model2 = new IndexViewModel
{
Email = user.Email,
FirstName = user.FirstName,
LastName = user.LastName,
City = user.City,
}
};
return View(model);
Aber dann gibt eine andere Sache, eine
Objektverweis nicht auf eine Instanz eines Objekts festgelegt.
Fehler.
@foreach (var item in Model.Model1)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Title)</td>
....
</tr>
}
Diese @foreach (var item in Model.Model1
) Linie ist die Ursache des Problems. Jetzt ist die Syntax gut. Ich habe die gleiche Zeile, die alles aus dem ersten Modell (IEnumerable<Name.Models.Project>
) ohne Probleme abrufen wird. Ich kann nicht mit diesem Fehler umgehen
EDIT: Die Lösung war, dass ich Model1 innerhalb des Modells des Typs TwoViewModel innerhalb des ManageController initialisieren musste. Dies behebt meinen Fehler
[Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve) –
Die Fehlermeldung ist selbsterklärend.Sie haben eine Ansicht mit '@model TwoViewModel', aber irgendwo übergeben Sie ein Modell an diese Ansicht, die' IndexViewModel' ist. –
Okay, ich werde den ganzen Code hinzufügen, um das Problem reproduzieren zu können. – crystyxn