Both Html.Partial and Html.RenderPartial have an overload that accepts a ViewDataDictionary. You can build a new one, or simply pass the existing one.
@{ Html.RenderPartial("_MyPartial", Model.Property, new ViewDataDictionary { ... });}
or
@{ Html.RenderPartial("_MyPartial", Model.Property, ViewData);}
I'm fairly certain ViewBag is accessible to your partial without the need to pass any parameters.
EDIT:
ViewBag and ViewData are definitely available to both partials and editor/display templates. You can edit them in your view before a subordinate view accesses them like this:
@{ ViewBag.MyNewValue = "..."; }
@Html.Partial("_MyPartial", Model)
Then in your partial:
@{ string myString = ViewBag.MyNewValue; }