ASP.net MVC 4 laden-Menü aus Datenbank, Teilansicht
ich bin ein mvc-Neuling.
Was ich versuche zu tun, ist das laden-Menü aus der Datenbank und zeigt Sie in der Teilansicht. Diese Teil-Ansicht aus aufgerufen werden _layout anzeigen.
Home Controller
in der Home controller ich eine Aktion namens "_MainMenu"
public class HomeController : Controller
{
mrpDatabase _db = new mrpDatabase();
public ActionResult _MainMenu()
{
return PartialView("_MainMenu", _db.menu.ToList());
}
....
}
PartialView
dies ist mein _MainMenu PartialView
@model IEnumerable<appMRP.Models.menu>
<ul id="menu">
@foreach (var item in Model)
{
<li>@item.menu1</li>
}
</ul>
Layout Seite
diese teilweise im Menü angezeigt wird in meiner _Layout.cshtml wie diese
<nav>
@Html.Partial("_MainMenu")
</nav>
wenn ich diesen starte. ich erhielt den Fehler
"NullReferenceException wurde unhandled by user code.
Objektverweis nicht auf eine Instanz eines Objekts"
scheint das "Modell" in meinem _MainMenu null ist
was habe ich falsch gemacht ?
danke
InformationsquelleAutor Haqi Petrucci | 2013-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die partielle view verwendet ein Modell, die Sie brauchen, um es zu übergeben, wie in diesem:
oder etwas zu diesem Effekt. Aktuell, Sie sind nicht die Angabe eines Modells für die
_MainMenu
- Ansicht, so dassnull
verwendet wird. Wenn Sie versuchen, eine@foreach
es wirft die Ausnahme, die Sie sehen.Beachten Sie, dass
@Html.Partial("_MainMenu")
nicht aufrufen Ihre_MainMenu
controller-action, nur das rendering der Ansicht, dass die Namen.Wenn Sie möchten, rufen Sie eine Aktion, die Sie verwenden können, ein Kind-Aktion wie folgt:
InformationsquelleAutor recursive
du schon die Antwort. überprüfen Sie die _db.Menü.ToList() ist nicht null zurückgeben. Ich schlage vor, Sie verwenden
Model-View-ViewModel
Muster. erstellen Sie ein Modell für die Ansicht. und zurückkehren zu sehen, so dass Sie die Kontrolle über das Modell und was zeigen die Sicht .einige Sache wie diese
Ihrer Ansicht
InformationsquelleAutor Ravi Gadag