I have now browsed many forums for answer to a quite basic question, but to my surprise I can't find a good example of a very basic design that most sites uses. I am not new to programming but it was a while ago I worked more substantial with it and I am totally new to ASP.NET. I am currently working with VS2010 and building an ASP.NET MVC 3 site from scratch. The site is AJAX enabled and I am currently using both an According control for left pane navigation and a TabContainer for top tab navigation.
Everything so far is included in one master page, and the basic problem is that when selecting navigation links in the left/top menus, the entire page reloads and destroys states for the navigational menus. Also, there is totally unnecessary flickering and I see no reason for reloading the entire page, I only want to change contents of the "main area" without touching the navigation menus.
The site structure is currently built up with <DIV>
elements which makes the design quite straight forward and a structure of CSS files provides great flexbility and control. From recommendations I would like to do whatever I can to avoid obsolete solutions such as IFrames. I want to make a foundation for how this can be done in a modern and flexible way, with as few compromises as possible. It is important since the system I have started might be worked on by an entire team after having passed a number of decision forums.
I have as I as said browsed quite extensively for solutions, and found many explanations on the concept of master pages that gives me input to what my problems seems to be: my navigation menus are bound to a master page, a master page is really only a "user control" that connects tightly to the content pages and these merged pages reload when I select a navigation link. And that is not supposed to happen, it is not acceptable.
I have also tried to wrap the loading of the navigational panels in "!IsPostBack" conditions, but I've come to the conclusion that the problem is not PostBack:s, the problem is that a click on a link/treelink/accordion pane in the left menu really requests a totally new page and so everything reloads and the former state is lost. Of course I could write code to store states and provide the "new page" with the last states, this would be a solution if nothing else is possible; but I really don't want to reload the entire page; I only want to reload the "main area" to decrease bandwidth need and also avoid flickering.
So I have searched for ways of only update the "main content contentplaceholder" and I see many questions on this subject but very few good answers, and especially not when I want to change the entire aspx page in the main area, not just update a number of controls (or dynamically create new ones/delete old ones etc). The reason for the urge to change the entire aspx page is that different pages will provide different functionality and it is not enough by simply manipulating some controls, but the main area should be loaded with another aspx page - from a development organisation perspective it is also good since different developers can then work on different areas of functionality in the full blown application.
I am willing to abandon the entire master page strategy, or used nested master pages, or wrap master pages in non-master pages, or use updatepanels, or use cross page postings or whatever. But I find no example of something that actually works that I can use as a start.
And, since this is basically at this point only client side updates, I can't really understand why this should become such a tricky thing to straigthen out.
So, very simply put my question is this: what would you consider to be the basic strategy for designing a site where I have navigational menus (top and left) that can load new aspx pages into a certain area (main area) and ONLY update this area and NOT the entire site.
If you can provide me with some description of this and of course preferably some demo site where only a portion of a site is updated with a new page but not the full page - it is as simple as that! - when this would be extremely welcome. Spent three days now browsing for a good recommedation and I just get more and more confused... :-(
Would be very grateful for directions.
/DT