Dieser Artikel ist für mich- arbeitete unten beschreiben i in schildert in dem freigegebenen Verzeichnis schreibe Sie alle Ihre Dateien setzen (wie Masterseiten und Teilansichten), die in Ihrer Webanwendung verwendet werden, hoffentlich in einer Situation, in der sie mehr als einmal verwendet werden (für Teilansichten). Es gibt keinen gemeinsamen Controller, aber Sie könnten einen CommonController erstellen, der Dinge wie Ihr Menü verarbeiten kann.
Ich weiß nicht, welche anderen Daten Sie in Ihrer Ansicht anzeigen müssen, aber wenn Sie Ihr Beispiel betrachten, scheint es, als ob Sie Menüelemente in einem ul-Tag anzeigen möchten.
würde ich eine Klasse, die einen Menüpunkt wie darstellen würde:
public class MenuItem
{
public int MenuId { get; set; }
public string MenuName { get; set; }
}
ich immer für jede Ansicht eine Ansicht Modell erstellen. Das ist besser, weil Sie dann nur die Felder haben, die für die Ansicht benötigt werden. Senden Sie Ihre Domänenobjekte niemals direkt an die Ansicht.
Ein Ansichtsmodell würde so aussehen, es kann viele andere Eigenschaften enthalten, aber für diese Demo werde ich nur die meu Elemente einschließen.
public class MyViewModel
{
// This will contain the menu items that you want displayd in your view
public IEnumerable<MenuItem> MenuItems { get; set; }
}
Sie Aktionsmethode (in einem Controller genannt etwas wie CommonController):
public ActionResult MyActionMethod
{
MyViewModel viewModel = new MyViewModel
{
// Here you do a database call to populate your menu items
// This GetAllMenuItems method returns a list of MenuItem objects
MenuItems = menuItemService.GetAllMenuItems()
};
return View(viewModel);
}
eine Teilansicht erstellen, der seine Daten aus CommonController erhalten wird (Sie dies mit dem Aktionsmethode oben erstellen müssen) . Durchlaufen Sie jedes MenuItem in MenuItems und zeigen Sie den Namen in einem li-Tag an.
<ul>
@foreach (var item in Model.MenuItems)
{
<li>item.MenuName</li>
}
</ul>
Ich hoffe, das hilft. Den Rest überlasse ich dir und erledige den Rest und lese weitere Artikel. Es gibt viele Informationen im Internet, die beschreiben, was Sie tun möchten. Sie müssen nur in Zeit investieren, um diese Artikel zu lesen.
Dies ist ein sehr nützlicher Artikel, um Asp.net Masterseiten-Funktionalität in MVC zu erreichen. Wenn wir eine Funktionalität haben wollen, die für jede Seite üblich ist [jeder Controller/View in MVC], müssen diese Artikelschritte folgen. Ich konfrontiert einmal Problem, das in diesem Artikel nicht erwähnt wird unter- teilen Wenn wir Teilansicht erstellen, die auf _layout Seite aufgerufen werden wird in jeder Ansicht zu teilen .. wir hasen zu schreiben - @ {Html.RenderAction ("BindMenu", "Common");} auf _Layout-Seite. Da ich Neuling war und ich versuchte, Teilansicht like- @ Html.Partial ("~/Ansichten/Shared/_HeaderMenuPartial.cshtml", Model.MenuItemsList) , die nicht funktionierte.
perfekt, ich ging dies völlig in die falsche Richtung. – GrahamHull
@Brendan Sie sagen, man sollte View-Modell anstelle von Datenmodell verwenden, dann wie soll ich fortfahren, wenn ich Daten mit View Model in DB hinzufügen möchte, da Daten nur mit Datenmodell mit Entity Framework gespeichert werden können. Korrigieren Sie mich, wenn ich falsch liege – Steve