Динамическое объявление главной страницы - ASP.NET MVC - PullRequest
0 голосов
/ 18 сентября 2009

Я пытаюсь создать систему тем для моего приложения asp.net mvc.

Мне удалось создать пользовательский механизм просмотра и пользовательский класс контроллера, чтобы изменить способ вывода видов.

Моя проблема - шедевры. Есть ли способ сделать это следующим образом: Это директива @Page вида

<%@ Page Title="" Language="C#" 
MasterPageFile="<%= ViewData["myThemeFolder"] + "/Views/Shared/Site.Master"  %>" 
Inherits="System.Web.Mvc.ViewPage" %>

Я пытался это сделать, но это не сработало. Я хотел бы добиться этого, но не знаю как.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2009

Я закончил тематикой, используя замену таблицы стилей. Я использую jQuery UI и связанные темы от ThemeRoller. Вы можете подумать о том, чтобы сделать это или что-то подобное в качестве альтернативы смене главной страницы. Вы можете найти больше информации о том, как я это сделал, в моем блоге , где я написал о плагине jQuery, который я использую, чтобы позволить людям менять темы, выбирая другую таблицу стилей темы.

0 голосов
/ 18 сентября 2009

Что вам нужно сделать, так это установить для свойства MasterPageFile «базовый» мастер, на котором есть «стандартный» набор элементов управления содержимым.

Затем динамически выберите мастер из вашего контроллера:

return View(viewName, masterName, modelObject);

Вы не можете обработать это в View, потому что эта часть View не имеет никакого представления о том, что такое ViewData и т. Д. Это в значительной степени директива препроцессора.

Так или иначе, вы можете сделать одно из следующих действий:

1) Добавьте метод ThemedView (или как вы хотите его вызывать) в реализацию базового контроллера, а затем верните его вместо View () для возврата ваших ViewResults.

2) Создайте пользовательский атрибут ActionFilterAttribute для динамической замены главной страницы.

В любом случае вам придется либо использовать новый метод, либо украшать вещи с помощью ActionFilterAttribute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...