Я бы сказал, что, поскольку это главная страница, вам, вероятно, придется хранить данные, которые вы передаете, во ViewData со строковым ключом. Если бы это была обычная страница просмотра, было бы лучше иметь строго типизированную страницу, но это другой случай. Так что вы, вероятно, сделали бы что-то такое в вашем контроллере:
ViewData["MasterPageData"] = FunctionToGetData();
А затем на главной странице что-то вроде этого:
<%
if (ViewData["MasterPageData"] != null)
{
Html.RenderPartial("ControlName.ascx", ViewData);
}
%>
Затем в элементе управления обработайте, как на обычной странице просмотра:
<% var categories = (CastIfNeeded)ViewData["MasterPageData"]; %>
process as normal...
Мне еще не приходилось передавать данные на главную страницу, но я бы подумал, что вы это сделаете. Подробнее здесь.
РЕДАКТИРОВАТЬ: немного изменил его, чтобы отразить то, что я делаю в моем текущем проекте.