2010-11-12 7 views
0

Я хочу создать два частичных класса для одиночного aspx-файла. Я использую vs2005 dotnet 2.0. я не смог получить доступ к методу из одного частичного класса в других частичных классах.asp.net partial classes

Может ли кто-нибудь помочь мне.

Частичный класс 1: моя главная ASPX страница

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) { } 
    private void meth() { } 

} 

Частичный класс: 2

public class _Default : System.Web.UI.Page 
{ 
    public _Default() { } 
} 

я не мог получить доступ к методу денатурата в разделяемом классе 2

+1

Не могли бы вы выставить здесь определение класса? –

+1

убедитесь, что оба ваших класса имеют модификатор 'same name 'и' partial' и расширяют 'System.Web.UI.Page' –

+0

У меня то же самое, что вы сказали .. но все равно это не сработало. Частичный класс 1: моя главная страница aspx public partial class _Default: System.Web.UI.Page { защищен недействительным Page_Load (объект отправителя, EventArgs е) { } собственной недействительным денатурат() { }} Частичный класс: 2 класс _Default общественности: System.Web.UI .стр { \t общественного _default() \t { \t \t \t }} Я не мог получить доступ к методу meth в частичном классе 2. – muthukumarm

ответ

3

Вы должны использовать частичный модификатор для обоих описаний классов, например, так:

// Default.aspx.cs 
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) { } 
    private void meth() { } 
} 

// Default_Part2.aspx.cs 
public partial class _Default : System.Web.UI.Page 
{ 
    public _Default() 
    { 
     meth(); 
    } 
} 

В VS 2005, это может быть также необходимо обновить зависимости в ASPX файла , здесь:

http://aspnetresources.com/blog/partial_class_files_in_vs2k5

Короче говоря, открытый файл проекта с простым текстовым редактором, и искать:

<Compile Include="Default_Part2.aspx.cs"> 
    <SubType>ASPXCodeBehind</SubType> 
</Compile> 

Добавьте свой файл следующим образом:

<Compile Include="Default_Part2.aspx.cs"> 
    <SubType>ASPXCodeBehind</SubType> 
    <DependentUpon>Default.aspx</DependentUpon> 
</Compile> 

Я не знаю, если это будет работать, так как я не имею VS 2005, чтобы проверить его. Надеюсь, что это помогает, хотя ...

+0

Я пропустил частичный модификатор в комментарии. но я использую тот же код, что и выше. он бросает ошибку времени компиляции, говорит, что Meth() не существует в текущем контексте. Более того, я смог получить доступ к System.Web.UI.Page для наследования во втором классе. Мой второй класс доступен в файле .cs. , пожалуйста, помогите ... – muthukumarm

+0

Можете ли вы опубликовать код двух файлов? Только соответствующие части, заметьте ... –

+0

В объявлении второго класса, которое вы указали выше, вы пропустили «частичный» модификатор. Вы также пропустили его в своем коде или просто в своем посте? –

2

Ваш второй класс делает не имеет модификатора partial.

Понадобится:

public partial class _Default : System.Web.UI.Page 
{ 
    public _Default() { } 
} 
1

* Кое-что о частичном классе: - *

Все частные определения должны исходило с ключевым словом «частичным». Все частичные типы, которые должны быть частью одного и того же типа, должны быть определены в одной сборке и модуле. Подписи методов (тип возврата, имя метода и параметры) должны быть уникальными для агрегированного типизированного (который был определен частично). Частичные типы должны иметь одинаковую доступность. Если какая-либо деталь запечатана, весь класс герметизирован. Если какая-либо часть абстрактна, весь класс является абстрактным. Наследование любого частного типа относится ко всему классу.