Вам необходимо использовать метод Html.RenderPartial на главной странице.
Вам потребуется установить ключи данных представления MainMenuSortListDisplay и SubMenuSortListDisplay в любом действии, вызывающем представление, использующее вашу главную страницу.
В вашем мастере используйте это
<% Html.RenderPartial("~/Views/Shared/Menu.ascx");
Путь должен быть относительным путем приложения к папке элемента управления. Как правило, они идут под общим. Вы можете сделать структуру, как вы хотите ниже общей папки.
Чтобы сделать эту технику сильнее, используйте строго типизированный частичный. В этом вопросе вы, возможно, создадите новый класс (MenuModel) с двумя общими коллекциями в качестве свойств и поместите его в папку моделей приложения. Затем в конструкторе модели вызовите метод, который заполняет списки.
public class MenuModel
{
public IEnumerable<MainMenuSort> OuterList {get; set;}
public IEnumerable<SubMEnuSort> InnerList {get; set;}
public MenuModel()
{
VoidThatFillsTheInnerAndOuterList();
}
Это будет означать, что вы можете сделать это в вашем контроллере
public ActionResult ShowAForm()
{
ViewData["MenuPartialData"] = new MenuModel();
return View();
}
Установив этот ключ, ваша главная страница может использовать перегрузку RenderPartial, как это
<% Html.RenderPartial(
"~/View/Shared/Menu.ascx",
(MenuModel)ViewData["MenuPartialData"]); %>
Предполагается, что ваше частичное строго типизировано в класс MenuModel. Тогда в частичном вы можете использовать модель, которая немного переписывает ваш код
<% 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>
<%} %>
<%} %>
<%}%>
Надеюсь, это поможет