OK, I have got some clues on subject question looking through Scheduler's module Edit and History hyperlink buttons:
Edit:
<asp:HyperLink
ID="editLink"
NavigateUrl='<%# EditURL("ScheduleID",DataBinder.Eval(Container.DataItem,"ScheduleID").ToString()) %>'
Visible="<%# IsEditable %>"
runat="server">
<asp:Image
ID="editLinkImage"
ImageUrl="~/images/edit.gif"
Visible="<%# IsEditable %>"
AlternateText="Edit"
runat="server"
resourcekey="Edit" />
</asp:HyperLink>
History:
<asp:HyperLink
CssClass="CommandButton"
ID="lnkHistory"
resourcekey="lnkHistory"
NavigateUrl='<%# EditURL("ScheduleID", DataBinder.Eval(Container.DataItem,"ScheduleID").ToString(), "History") %>'
runat="server">History</asp:HyperLink>
The answer is EditUrl(...) method from DNN's ModuleInstanceContext class:
Public Class ModuleInstanceContext
Public Function EditUrl() As String '
Public Function EditUrl(ByVal ControlKey As String) As String
Public Function EditUrl(ByVal KeyName As String, ByVal KeyValue As String) As String
Public Function EditUrl(ByVal KeyName As String, ByVal KeyValue As String, ByVal ControlKey As String) As String
Public Function EditUrl(ByVal KeyName As String, ByVal KeyValue As String, ByVal ControlKey As String, ByVal ParamArray AdditionalParameters As String()) As String
...
The ControlKey parameter defines Key value from Module Controls' definition of a control to be called/loaded.
Still open question here - is that EditUrl(...) method the only one to load different controls of a module?
I also thought that if "Supports Partial Rendering" checked then loading controls should be performed AJAX-way - but it doesn't look like it works that way...
Thank you.
--Shamil