2010-09-29 6 views
1

У меня возникла проблема с пользовательским ViewEngine. Я пытаюсь переопределить метод FindView, чтобы установить мастер-представление, не определяя его на каждой странице просмотра.asp.net mvc 2: установить главную страницу в FindFeView WebFormViewEngine

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) 
{ 
    if (string.IsNullOrEmpty(masterName)) 
    { 
     masterName = this.MasterView; 
    } 
    return base.FindView(controllerContext, viewName, masterName, useCache); 
} 

Из отладчиков просмотра все выглядит нормально: Я не установить свойство MasterPageFile на странице просмотра, masterName приходит как пустая строку, masterName получает значение this.MasterView (который получает набор инициализации просмотреть двигатель).

Проблема: браузер отображает «Элементы управления содержимым разрешены только на странице содержимого, которая ссылается на главную страницу». без отладки.

Кто-нибудь знает, почему или если это даже ожидаемое поведение?

Заранее благодарен!

ответ

1

Хорошо, я решил. Для того, чтобы заставить его работать (по крайней мере в моем случае) просто нужно удалить вид по умолчанию двигатель на:

ViewEngines.Engines.Clear(); 

А затем добавить новый (пользовательский) один:

ViewEngines.Engines.Add(new AreaViewEngine(this.MasterView)); 

и вуаля, его работает.

+0

Да, так я тоже это делаю. – bzlm

+0

Да ... может быть, есть способ изменить приоритеты просмотров или что-то в этом роде, чтобы не было необходимости в ясности ... кто знает ;-) –

 Смежные вопросы

  • Нет связанных вопросов^_^