2009-07-01 3 views
2

Я пытаюсь создать общий класс, в котором все мои страницы ASP.Net наследуются, поэтому я могу совместно использовать функции на нескольких страницах.Страницы Masterpage и Content, наследующие от одного класса

Для этого я бы создал новый класс, который наследуется от System.Web.UI.Page (страницы содержимого должны наследовать это), а затем мои страницы содержимого наследуют новый класс create.

Моя проблема заключается в том, что Masterpage наследуется от System.Web.UI.Masterpage.

Как настроить мой проект так, чтобы как контент-страницы, так и Masterpage и использовать функции из общего класса?

Пожалуйста, не стесняйтесь спросить, не ясна ли я!

Спасибо!

E

ответ

2

Во-первых, не уверен, зачем вам это нужно. По своей функции «Главные страницы» должны, в основном, иметь функции, с которыми ваши страницы не должны интересоваться, и наоборот. И если вам просто нужны некоторые общие функции, которые не зависят от страницы, вы можете просто создать статический класс (подобно Math) или вспомогательный класс, который можно реализовать в базовых классах MasterPage и Page custom.

Но ваш единственный реальный вариант - создать два пользовательских базовых класса. Тот, который наследует MasterPage, а другой - от страницы. Оба должны будут реализовать интерфейс ICommon, который вы создаете. Затем создайте еще один статический класс, для которого вы можете проксировать все функции.

Решение Yucky, но это единственный, о котором я могу думать.

EDIT

Вот лучшее решение

public class Helper 
{ 
    public static int getUserID(...) 
    { 
     // ... Code to get User ID 
    } 
} 

В ваших MasterPages и страницы используют

int UserID = Helper.getUserID(...); 
+0

Я хочу сделать это, потому что у меня есть много функций и данных, которые я хочу использовать на разных веб-страницах. Без этого мне придется создать функцию getUserID, на каждой странице, где я хочу получить идентификатор пользователя. Для функций, связанных с страницей, я оставлю их в файле CodeBehind. –

+0

Поскольку getUserID не зависит от страницы, вы можете просто создать статический класс, к которому они могут получить доступ. Я отредактирую свой пост. –

+0

Идеально. благодаря –

0

Я не думаю, что вы можете сделать это, MasterPage наследует UserControl и Страница наследует TemplateControl. Как сказал Спенсер, я бы просто создал класс Helper/Utility.

0

Я знаю, что уже слишком поздно, но просто хочу поделиться тем, кто может наткнуться на них. Это пример кода с использованием функции Extension:

public static void Commonfunction(this TemplateControl ctl) 
{ 
     // Your Code here 
} 

Вызов этой функции, как

this.Commonfunction(); 

в любой странице или MasterPage.

0

Хотя вопрос 5 лет, я хотел поделиться другим вариантом для будущих читателей.

Из того, что вы объяснили, я полагаю, что то, что вы называете MasterPage, похоже на кадр, который загружает страницу содержимого на стороне экрана, например.

Если я прав, вы можете создать класс BaseMasterPage с вашими функциональными возможностями, а затем создать MasterPage для своих страниц контента (которые вы также можете использовать для размещения некоторого кода с ваших текущих страниц). Следующий шаг, очевидно, сделать как ваш текущий MasterPage, и, скажем, ContentMasterPage унаследовать от этого BaseMasterPage.

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

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