#c# #asp.net-mvc #webforms #master-pages
#c# #asp.net-mvc #webforms #мастер-страницы
Вопрос:
Проект, над которым я работаю, был проектом, который изначально был WebForms, а затем перенесен на Asp.Net Страницы MVC. 3 все еще используют Webforms, и переписывать их не стоит усилий.
Чтобы избежать необходимости поддерживать две отдельные главные страницы, которые выглядят одинаково, у меня есть две главные страницы, MVC.Master
и Webforms.Master
. Webforms.Master
имеет MVC.Master
значение главной страницы, поэтому всякий раз, когда я добавляю новую ссылку на инструмент в свое меню, она всегда отображается, независимо от того, просматривает ли пользователь Webforms или страницу MVC. Webforms.Master
На нем нет ничего, кроме менеджера сценариев AjaxToolkit.
До сих пор все работало нормально, теперь я добавляю поддержку Telerik. Проблема в том, что вы не можете использовать Html-помощники на страницах WebForm, поскольку вы получаете исключение A ViewMasterPage can be used only with content pages that derive from ViewPage or ViewPage<TModel>.
Поскольку меня не волнует, запускаются ли для страниц Webform скрипт Telerik и регистраторы таблиц стилей, я в идеале хотел бы сделать что-то вроде
<% if (!PageIsWebforms)
{
Html.Telerik().....
}
%>
К сожалению, я не могу придумать хорошего способа успешно определить, является ли внутренняя страница страницей WebForms или нет. У кого-нибудь есть идеи, как я могу этого добиться?
Ответ №1:
Страницы MVC наследуют что-то другое, кроме System.Web.UI.Page, не могли бы вы протестировать Page is System.Web.MVC.ViewPage
. Вы могли бы сделать это свойством, чтобы упростить разметку.
Комментарии:
1. Это сработало. Если страница является страницей MVC, то
Page
свойство наследуется отSystem.Web.MVC.ViewPage
, поэтому проверка, еслиPage is System.Web.MVC.ViewPage
, сообщает мне, является ли страница MVC или нет. Спасибо!2. @KallDrexx, более прямым тестом было бы проверить
Page is System.Web.MVC.ViewPage
(обратите внимание,чтоэто не as ). Я отредактировал свой ответ, чтобы включить фактический тип страницы MVC.