2016-08-11 4 views
-2

Ich habe ein Layout von 4 Seiten und im Header muss ich auf den Namen des eingeloggten Admin zugreifen. wie man das Datenbankmodell in Admin-Zugriff auf in i Können wir Modelle in Layout.cshtml hinzufügen?

@model ProjectName.Models.Admin 

von Layout beginnen und während Name Ich schreibe von Admin-Zugriff auf

@Model.Name 

hinzugefügt haben, es gibt Fehler, wie es in der richtigen Art und Weise den Zugang zu tun dieses Attribut im Layout und es kann nicht Teilansicht sollte es Layout so freundlich sein helfen

+1

Verwenden Sie '@ Html.Action()' im Layout entweder zum Aufrufen einer Servermethode, die eine Teilansicht zurückgibt, oder verwenden Sie ein Basisansichtsmodell mit den von Ihnen benötigten Eigenschaften und deklarieren Sie das Basisansichtsmodell im Layout und in der Verwenden Sie Ansichtsmodelle, die von diesem Basisansichtsmodell abgeleitet sind –

Antwort

1

Wie @Stephen Mücke in seinem Kommentar zu Ihrer Frage angegeben, gibt es mehrere Möglichkeiten, wie Sie das tun können. Ich würde dir empfehlen, deine Layoutansicht ohne Modell zu behalten. Sonst müßten Sie, wie @Stephen Mücke erwähnt, für jede Ansicht, die dieses Layout entweder des gleichen oder eines abgeleiteten Typs verwendet, Typen von Modellen machen, was Ihrem Code unnötige Komplexität hinzufügen würde.

So ist der andere Weg, HtmlHelper.Action(...) oder HtmlHelper.RenderAction() in Ihrer Layout-Ansicht an der Stelle, wenn Sie den Benutzernamen rendern möchten. Beispiel:

Layoutseite:

... 
<div class="admin-name"> 
    @{ Html.RenderAction("AdminName", "Partial"); } 
</div> 
... 

einen Controller hinzufügen:

public class PartialController : Controller { 
    [ChildActionOnly] // action cannot be requested directly via URL 
    public ActionResult AdminName() { 
     string adminName = ...; // assign value to adminName variable 
     return Content(adminName); 
    } 
} 
0

Sie in Benutzerdaten angemeldet müssen in so vielen Seiten in der Anwendung, so besser zu Speichern in Benutzerdaten angemeldet Sitzung und Sie können den Sitzungswert in jeder Ansicht/Teilansicht abrufen.

Andere Lösung:

Ihre Kopfteilansicht Stellen und ruft aus dem Layout

Html.RenderAction("actionName", "controllerName") 
0

eine Aktionsmethode in Ihrem Controller erstellen, die

Teilansicht zurück

Controller Aktion Methode

[HttpGet] 
public ActionResult Header() 
{ 
    HeaderModel HM = new HeaderModel() 
    // Your user information in HeaderModel 
    return PartialView("Header", HM) 
} 

_layout.cshtml

Ich hoffe, dass dies Ihr Problem lösen wird.

Verwandte Themen