Могу ли я заполнить ContentPlaceHolder на главной странице из Razor Partial View? - PullRequest
3 голосов
/ 13 октября 2011

Я использую типичный встроенный механизм просмотра в mvc3 (для него есть правильное имя?) Для представлений и главных страниц, и он включает частичное представление Razor на странице .aspx. На главной странице есть ContentPlaceHolder с идентификатором "ScriptContent".

Я хочу иметь возможность заполнить это ContentPlaceHolder в частичном представлении Razor, но я не думаю, что это возможно. Кто-нибудь знает, возможно ли это и как мне поступить?

Я уже пытался воспроизвести его в частичном виде, но это не сработало.

@section ScriptContent {
    ... content ...
}

1 Ответ

2 голосов
/ 13 октября 2011

Было бы очень сложно, настолько, что я бы порекомендовал найти другой способ :(. Хотелось бы, чтобы это было проще, но это сложности, связанные с интеграцией нового механизма представления в существующую унаследованную систему.

Чтобы дать вам преимущество, если вы действительно хотите попробовать это: вам, вероятно, нужно создать собственный базовый класс, наследующий от WebViewPage для ваших страниц содержимого Razor, переопределить некоторые из методов (честно говоря, я не слишком знаком с этим аспектом, поэтому вам нужно будет выполнить отладку, чтобы следовать конвейеру), чтобы вместо обработки свойства Layout как пути к странице Layout вы рассматривали его как главную страницу. Затем вам нужно создать экземпляр главной страницы и каким-то образом преобразовать разделы (которые были преобразованы в вызовы DefineSection анализатором Razor и должны храниться в словаре где-то в базовом классе) в элементы управления содержимым и вставить их в Мастер страница.

Если бы я не потряс ваш разум к этому моменту, вы могли бы просто справиться с этим, но, честно говоря, я бы этого избегал.

P.S. Мы называем старый механизм просмотра «ASPX», основываясь на его расширении файла;).

...