Есть ли способ загрузить мастер-страницу извне текущего приложения? - PullRequest
3 голосов
/ 10 декабря 2010

Я создаю прототип среды, в которой несколько приложений работают на одном сервере, но все они совместно используют главную страницу.

Можно ли загрузить главную страницу из другого приложения?В одном из моих приложений у меня есть этот код:

    protected override void OnPreInit(EventArgs e)
    {
        base.OnPreInit(e);
        this.MasterPageFile = "~/../MasterPages/Root.master";
    }

Для этого на главной странице устанавливается файл, находящийся за пределами моего текущего приложения.(Обратите внимание на «..» после тильды - так что я иду в корень моего текущего приложения, затем увеличиваю каталог, чтобы найти главную страницу.)

ASP недоволен этим:

The virtual path '/MasterPages/Root.master' maps to another application, which is not allowed.

Я понимаю, что это может подчеркнуть тот факт, что для него нет класса поддержки, но что, если у меня ничего нет в коде, и я решаю не наследовать свою главную страницу от чего-либо- так что все это содержится в файле ".master"?

Есть ли способ сделать это?

Ответы [ 3 ]

4 голосов
/ 10 декабря 2010

Вы можете рассмотреть возможность сопоставления виртуального каталога со структурой папок ваших приложений, тогда этот каталог можно сопоставить нескольким приложениям одновременно.

1 голос
/ 10 декабря 2010

Просто думаю о манжете, но что, если вы создадите виртуальный каталог под каждым приложением, который отображается в один и тот же физический каталог:

 protected override void OnPreInit(EventArgs e)
 {
        base.OnPreInit(e);
        this.MasterPageFile = "~/MasterPages/Root.master";
 }

Таким образом, вы можете иметь физическую структуру:

C: \ Inetpub \ Wwwroot \ MasterPages
C: \ Inetpub \ Wwwroot \ App1
c: \ inetpub \ wwwroot \ App2

Тогда вы бы настроили IIS как:

корень \ App1
корень \ App1 \ MasterPages
корень \ App2
корень \ App2 \ MasterPages

0 голосов
/ 11 декабря 2010

Мы сделали нашу главную страницу очень общей. Каждая главная страница будет использовать WebRequest для захвата нашей обычной html (или .aspx) подковой.

Самое сложное в этом подходе - мы должны были положить маркеры в подкову. Эти маркеры будут указывать, что приложение может заменить и где разместить его содержимое.

...