but I am really not understanding how these work. For example, Viewbag.LayoutModel, lets assume I pass OrderVM into ViewBag. Now, the _Header partial view is expecting a type HeaderVM which is included in OrderVM. Do I need to create a reference to OrderVM in the layout page?
ViewBag is one example of built-in and short lived state management. There are others some longer lived like the database, Session, cookies, cache, URL, etc. I think the problem is you want to persist the data for some period of time.
Maybe Session is a good choice if you have one web server. Let's assume you use Session["OrderVM"] to store OrderVM. The partial would check if Session["OrderVM"] has data. If Session["OrderVM"] contains data then display the data.