1) One way would be to call RenderAction() and as such go to controller action and then controller would return the data to the View or PartialView as a Model for it. In general, you should be using strongly typed views and partial views wherever possible and try to avoid using ViewData and TempData.
2) You can also use RenderPartial("some view", ObjectData) to send an entire business object or POCO object or CLR variable to the partial view.
3) You can also have partial views strongly typed the same as your main view (the one that would then load up those partials). If you have the same type then doing just RenderPartial("some view") would render your partial view with the same Model that the "main" or "parent" view has.
I don't think I have more than 3-5 usages of ViewData or TempData in my apps, I almost never use it.