Render Partial View from other controller
Solution 1:
- You can share views between controllers by putting them into the Views/Shared folder. Each controller can then render that view by name.
- You can render a partial view (which can be shared between controllers as in (1)) within the current view using
Html.Partial()
. - You can use
Html.Action()
to invoke an action on a different controller and render the results within the current view. - You can use AJAX to load a partial view from a different controller after the page has been rendered.
Solution 2:
@Html.Partial("~/Views/ControllerB/Index.cshtml")
Solution 3:
Yes,
return PartialView("/path/view.cshtml");
You just need to work out the path part.
Alternatively you can put the partial view in views/shared then just return :
return PartialView("view.cshtml");
Solution 4:
Just a side note as i found this thread searching for the same question but the answers weren't working: in Orchard CMS modules you cannot use the neat solution posted by Pittfall, you have to use relative paths to return partial views. Lets say you have a controller
Controllers/SiteController.cs
and you want to return the partial view
Shared/MessageList/Items
then in your action methods you need to write
return PartialView("../Shared/MessageList/Items");