То есть, вы говорите, что MasterPage пуст, когда вы выполняете действия для .ascx "страниц"?
.ascx - это не страницы, а UserControls / PartialViews. И поэтому у них нет главных страниц. Их можно удалить в маге или на главной странице. Но если ваш запрос возвращает .ascx, он не будет иметь главной страницы ..)
UPD:
Скорее всего, это связано с тем, как работает MVC - все 3 части (M-V-C) полностью независимы. Это означает, что когда ваш код выполняется внутри контроллера, мы вообще ничего не знаем о представлении. И именно View выбирает главную страницу, а не контроллер.
Tbh, если вы пытаетесь изменить внешний вид приложения (изменить главную страницу) внутри контроллера - вы, скорее всего, делаете что-то не так. Во-первых, он был разработан с разделением контекста, и вы пытаетесь обойти это:)
UPD2:
Итак, вы говорите, что хотите вернуть полную страницу + главную страницу для обычных запросов и просто страницу без мастера (ну, по крайней мере, очистить) для запросов ajax? Вы все еще пробуете неправильный подход.
Вот что я делал вместо этого:
if (!Request.IsAjaxRequest())
return View(model);
else
return PartialView("PartialName", model);
Точно такая же ситуация. Если я загружаю URL-адрес в браузере - он возвращает полную страницу, мастер и все ... Если я загружаю его позже, используя вызов ajax - просто загрузите частичное представление. Просто и легко. И все же придерживается методологии MVC:)
Кроме того, если вы абсолютно заинтересованы в предварительном выборе имени мастера ... просто сделайте это так:
return View("ViewName", "MasterName", model);