asp.net mvc 2: установить главную страницу в FindFindView WebFormViewEngine - PullRequest
1 голос
/ 29 сентября 2010

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

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 Ответ

1 голос
/ 29 сентября 2010

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

ViewEngines.Engines.Clear();

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

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

эт вуаля, все работает.

...