I am attempting to load user controls inside a PlaceHolder using a RadMenu. Ajax manager is updating both the menu and the placeholder. When I click on the menu item nothing happens. Initially, when the page loads the homeview.ascx user control does load, but it is not updated on menuitem click.
ASPX Page
Code Behind
View Constants
ASPX Page
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="MainNav" /> <telerik:AjaxUpdatedControl ControlID="BodyContent" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <!-- Main Menu --> <div class="menu-wrapper" style="border-top: solid 40px #b1ddab;"> <telerik:RadMenu runat="server" ID="MainNav" EnableEmbeddedSkins="false" OnItemClick="MainNav_OnItemClick" CssClass="desktop_nav_menu" > <Items> <telerik:RadMenuItem Text="<%$ Resources:Main, MasterHome %>" /> <telerik:RadMenuItem Text="<%$ Resources:Main, MasterTraining %>" /> <telerik:RadMenuItem Text="<%$ Resources:Main, MasterSupport %>" /> </Items> </telerik:RadMenu> </div> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"></telerik:RadAjaxLoadingPanel> <asp:PlaceHolder ID="BodyContent" runat="server"> </asp:PlaceHolder>Code Behind
protected void Page_Load(object sender, EventArgs e) { this.LoadView(); }private string LoadedControlName { get { return (this.ViewState[ViewStateKeys.LoadedControlName] as string) ?? defaultContentControl; } set { this.ViewState[ViewStateKeys.LoadedControlName] = value; } }private void LoadView() { this.LoadView(this.LoadedControlName); } private void LoadView(string viewName) { Control control = this.LoadControl(string.Concat(SitePaths.Views, viewName)); control.ID = viewName; this.LoadedControlName = viewName; this.BodyContent.Controls.Clear(); this.BodyContent.Controls.Add(control); } public void MainNav_OnItemClick(object sender, RadMenuEventArgs e) { RadMenuItem currentItem = e.Item; string currentItemText = currentItem.Text; string controlPath = string.Empty; switch (currentItemText) { case ("Home"): controlPath = DefaultViews.Home; break; case ("Training"): controlPath = DefaultViews.Training; break; case ("Support"): controlPath = DefaultViews.Support; break; default: break; } if (!String.IsNullOrEmpty(controlPath)) { this.LoadView(controlPath); } }View Constants
public class SitePaths{ public const string Views = "~/Views/";}public class ViewStateKeys{ public const string LoadedControlName = "LoadedControlName";} public class DefaultViews{ public const string Home = "HomeView.ascx"; public const string Training = "TrainingView.ascx"; public const string Support = "SupportView.ascx";}