Calling Html.RenderPartial("~/Views/Payments/MyControl.ascx"); from a view works if MyControl.ascx is a control that directly inherits System.Web.Mvc.ViewUserControl.
However, if the control inherits a new class that derives from System.Web.Mvc.ViewUserControl, the call to Html.RenderPartial("~/Views/Payments/MyDerivedControl.ascx"); fails, reporting that no such view exists.
Example derived System.Web.Mvc.ViewUserControl:
class MyDerivedControl : System.Web.Mvc.ViewUserControl
{
public Method()
{
ViewData["SomeData"] = "test";
}
}
Is there a workaround, or is there another way I should be doing this? Perhaps an HTML helper?
From MVC point of view it is not a good design to have your view provide data. Usually this is the responsibility of the controller. Depending on the context and what this data represents you could use an HTML helper or a write an action filter. Here’s an example with a custom action filter:
And then decorate your action with this filter: