If you derived all your models from the base model, you can add a property to the base model, which returns the name of the controller that you can use with
this.RouteData.Values["controller"].ToString();
It would be even better if you had the BaseController class, because you could put it in the constructor and never have to touch it again.
Since you are returning a descendant of the base model to your index page with the controller name, now you can use some schema base on @Model.ControllerName . If your controller serves multiple views, the property can be updated to indicate a specific view name.
I do not think that you can get the name Partial inside the index if you are not using jquery, and by this time the page resources are already loaded.
Edit: Another trick is to create your own version of the Html.Partial () HtmlHelper class. So you have @ Html.MyPartial ("ViewName") , and inside this method, an internal function is called that generates Html.Partial and then enters your dependencies.
source share