2014-02-13 3 views
1

파일 크기가 너무 커지는 코드가 있습니다. 동일한 페이지를 제어하는 ​​파일 뒤에 여러 코드로 분할해야합니다. C#에서 부분 클래스로 끝난 것으로 보이지만 VB에서는 그렇지 않습니다. 부분 클래스 개념을 구현하려고 시도했지만 보조 파일의 페이지 컨트롤을 컴파일하거나 인식하지 않습니다. 여기VB.NET - 여러 파일에 코드 분할하기

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 

파일 Default.aspx.vb 뒤에 코드 :

Partial Public Class _Default 
    Inherits System.Web.UI.Page 

    <!-- methods go here --> 

End Class 

클래스 _Default이 너무 큰 성장이

여기 내 ASPX 페이지 지시자입니다. 몇 가지 메소드를 별도의 파일로 옮겨서 읽기 쉽고 유지 보수하기 쉽도록하고 싶습니다. 나는 거기에 다른 부분 공용 클래스 _Default와 별도의 파일을 만들려고 했어요.

Partial Public Class _Default 

    <!--- methods go here --> 

End Class 

그러나,이 두 번째 클래스 (제어 태그 RUNAT = "서버"로 표시)을 Default.aspx에 서버 컨트롤 중 하나를 인식 할 수 없었다. 클래스를 둘러싼 선언 된 네임 스페이스를 사용해 보았습니다.

구획화를 지원하기 위해 내 코드를 파일 뒤에 여러 파일로 분할하려면 어떻게해야합니까?

Update/Edit: 

내 질문은 this question하지만 비주얼 베이직에 대해 동일합니다 (차이 일 수 있지만, 어떻게 든이 안된다).

+0

두 파일에 모두 동일한 Import 문이 있습니까? – Lauren

+4

VS가 부분 클래스를 이미 수행 중이므로 Default.aspx.vb 및 Default.aspx.designer를 볼 수 있습니다.vb 코드가 너무 커지면 사용자 컨트롤을 만들거나 UI에서 비즈니스 로직을 제거하는 것이 좋습니다. –

+0

이것은 "당신의 잘못하고있는 일"이라는 단어가 큰 빨간 불빛으로 깜박 여야합니다. – asawyer

답변

0

@the_lotus - 위에서 언급 한 @ Kashif와 같이 문제는 웹 사이트 대 웹 응용 프로그램 인 것에 있다고 생각합니다. 내 프로젝트가 웹 사이트로 설정되었습니다. 웹 응용 프로그램은 여러 파일로 aspx 페이지 멤버에 액세스 할 수있는 단일 어셈블리로 컴파일됩니다. 웹 사이트가 여러 어셈블리로 컴파일되므로 aspx 페이지 멤버가 지정된 CodeFile에 잠겨 있습니다. 나는 당신의 예를 살펴보고 CodeFile 대신 CodeBehind를 사용한다는 것을 알기 전까지는 이것을 깨닫지 못했습니다. 그런 다음 MSDN에서 페이지 지시문 맨 페이지를 참조하고이 둘의 차이점을 살펴 보았습니다. 해당 페이지에서 The Web Site vs. Web Application 개념이 지정되었습니다. 이것은 @Kashif가 위에 언급 한 내용을 이해하도록 유도합니다.

간단히 말하자면,이 작업을 수행하려면 웹 응용 프로그램 프로젝트로 만들어야합니다. 노력과 당신이 제공 한 예를 들어 주셔서 감사합니다. 가장 도움이되었다!

1

방금 ​​VS에서 새 웹 프로젝트를 만들었고 _Default에 대한 새 부분 클래스를 만들었으며 모든 컨트롤에 easely 액세스 할 수있었습니다. 네임 스페이스에 문제가있을 수 있습니다.

Default.aspx를

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication2._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:TextBox ID="tbTest" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 

Default.aspx.vb

Partial Public Class _Default 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

     Test() 

    End Sub 

End Class 

Default.aspx.Designer.vb

Partial Public Class _Default 

    Protected WithEvents form1 As Global.System.Web.UI.HtmlControls.HtmlForm 

    Protected WithEvents tbTest As Global.System.Web.UI.WebControls.TextBox 
End Class 

새로 생성 test.vb

Partial Public Class _Default 

    Public Sub Test() 

     tbTest.Text = "123" 

    End Sub 

End Class