Vous devez utiliser la méthode Html.RenderPartial dans votre page maître.
Vous devrez définir les touches de données de vue MainMenuSortListDisplay et SubMenuSortListDisplay dans l'action qui appelle la vue qui utilise votre page maître.
Dans votre utilisation principale de cette
<% Html.RenderPartial("~/Views/Shared/Menu.ascx");
Le chemin doit être l'application chemin par rapport au dossier du contrôle. Généralement, ceux-ci vont sous Partagé. Vous pouvez faire la structure comme vous voulez sous le dossier partagé.
Pour renforcer cette technique, utilisez une partie fortement typée. Dans la question, vous pourriez créer une nouvelle classe (MenuModel) avec deux collections génériques en tant que propriétés et les placer dans le dossier models de l'application. Ensuite, dans le constructeur du modèle, appelez une méthode qui remplit les listes.
public class MenuModel
{
public IEnumerable<MainMenuSort> OuterList {get; set;}
public IEnumerable<SubMEnuSort> InnerList {get; set;}
public MenuModel()
{
VoidThatFillsTheInnerAndOuterList();
}
Cela signifie que vous pouvez le faire dans votre contrôleur
public ActionResult ShowAForm()
{
ViewData["MenuPartialData"] = new MenuModel();
return View();
}
Après avoir mis cette clé, votre page principale peut utiliser la surcharge de RenderPartial, comme celui-ci
<% Html.RenderPartial(
"~/View/Shared/Menu.ascx",
(MenuModel)ViewData["MenuPartialData"]); %>
Cette suppose que votre partiel est fortement typé à la classe MenuModel. Ensuite, dans la partie, vous pouvez utiliser le modèle qui réécrit votre code légèrement
<% 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>
<%} %>
<%} %>
<%}%>
Hope qui aide
Merci. Apprenez juste ASP.NET MVC et avez ajouté <% Html.RenderPartial ("~/Views/Shared/Menu.ascx");%> à la page site.master mais ne comprenez pas ce que vous voulez dire par: "Vous aurez besoin de Définissez les touches de données de vue MainMenuSortListDisplay et SubMenuSortListDisplay dans l'action qui appelle la vue qui utilise votre page maître." – Ros
Vous appelez la page en utilisant une méthode ActionResult dans votre classe de contrôleur.Par cette méthode, vous devrez définir les clés ViewData par exemple ViewData [" SubMenuSortListDisplay "] = SomeListPreferablyFromYourModel –
Revenez en arrière si vous êtes stil coincé :-) –