Sie benötigen die Html.RenderPartial Methode in Ihrer Master-Seite nutzen zu können.
Sie müssen die Ansichtsschlüssel MainMenuSortListDisplay und SubMenuSortListDisplay in jeder Aktion festlegen, die die Ansicht aufruft, die Ihre Masterseite verwendet.
In Ihrer Master Verwendung diesen
<% Html.RenderPartial("~/Views/Shared/Menu.ascx");
Der Pfad muss die App relative Pfad zum Ordner des Kontrolle. In der Regel gehen diese unter Shared. Sie können die Struktur wie gewünscht unterhalb des freigegebenen Ordners erstellen.
Um diese Technik zu verstärken, verwenden Sie eine stark typisierte partielle. In der Frage würden Sie vielleicht eine neue Klasse (MenuModel) mit zwei generischen Sammlungen als Eigenschaften erstellen und sie in den Modellordner der Anwendung einfügen. Rufen Sie dann im Konstruktor des Modells eine Methode auf, die die Listen auffüllt.
public class MenuModel
{
public IEnumerable<MainMenuSort> OuterList {get; set;}
public IEnumerable<SubMEnuSort> InnerList {get; set;}
public MenuModel()
{
VoidThatFillsTheInnerAndOuterList();
}
Dies bedeutet, dass Sie diese
public ActionResult ShowAForm()
{
ViewData["MenuPartialData"] = new MenuModel();
return View();
}
gesetzt Nachdem Sie diesen Schlüssel in Ihrem Controller tun können, können Sie Ihre Masterseite die Überlastung von RenderPartial, wie diese
<% Html.RenderPartial(
"~/View/Shared/Menu.ascx",
(MenuModel)ViewData["MenuPartialData"]); %>
Diese verwenden geht davon aus, dass Ihr Partial stark in die MenuModel-Klasse eingetippt ist. Dann in dem Teil können Sie das Modell verwenden, das Ihren Code neu geschrieben leicht
<% foreach (MainMenuSort mainMenuSort in Model.OuterList) { %>
<li><%= Html.Encode(mainMenuSort.MainMenuId.MainMenuName)%></li>
<% foreach (SubMenuSort subMenuSort in Model.InnerList) {%>
<%if (mainMenuSort.MainMenuId.Id == subMenuSort.SubMenuId.MainMenu.Id)
{ %>
<li><%= Html.Encode(subMenuSort.SubMenuId.SubMenuName)%></li>
<%} %>
<%} %>
<%}%>
Hoffnung, die
Vielen Dank. Ich habe gerade ASP.NET MVC gelernt und <% Html.RenderPartial ("~/Views/Shared/Menu.ascx");%> zur Seite site.master hinzugefügt, verstehe aber nicht, was Sie damit meinen: "Sie müssen Legen Sie die Datenschlüssel MainMenuSortListDisplay und SubMenuSortListDisplay in der Aktion fest, die die Ansicht aufruft, die Ihre Masterseite verwendet." – Ros
Sie rufen die Seite mit einer ActionResult-Methode in Ihrer Controller-Klasse auf. Bei dieser Methode müssen Sie die ViewData-Schlüssel setzen zB ViewData [" SubMenuSortListDisplay "] = SomeListVorzugsweise YourModel –
Rufen Sie zurück, wenn Sie immer noch fest stecken :-) –