VB.NET - 将代码分割成多个文件

时间:2014-02-13 20:44:23

标签: asp.net vb.net webforms code-behind partial-classes

我的代码隐藏文件太大了。我需要在控制同一页面的文件后面分成多个代码。我看到它在C#中用部分类完成,但在VB中没有。我试图实现部分类概念,但它没有编译或识别辅助文件中的页面控件。

这是我的ASPX页面指令:

<%@ 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变得太大了。我想将它的一些方法移动到单独的文件中,以便于阅读和维护。我尝试用另一个部分公共类_Default创建一个单独的文件。

Partial Public Class _Default

   <!--- methods go here -->

End Class

但是,第二个类无法识别Default.aspx上的任何服务器控件(标记为runat =“server”的控件标记)。我已经尝试过围绕类的声明命名空间无效。

如何将文件后面的代码拆分为多个文件以支持分区?

    Update/Edit:

我的问题与this question相同,但对于vb(不应该有区别,但不知何故)。

2 个答案:

答案 0 :(得分:1)

我刚在VS中创建了一个新的Web项目,为_Default创建了一个新的分部类,我可以轻松访问所有控件。您可能遇到命名空间问题。

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

答案 1 :(得分:0)

@the_lotus - 我认为正如上面提到的@Kashif,问题在于成为一个网站而不是一个Web应用程序。我的项目是作为一个网站设置的。 Web应用程序编译为单个程序集,允许多个文件访问aspx页面成员。网站编译成多个程序集,因此,aspx页面成员被锁定到其指定的CodeFile中。直到我查看你的例子并注意到你使用了CodeBehind而不是CodeFile,我才意识到这一点。然后,我在MSDN上引用了Page Directive手册页,并查看了两者之间的区别。该页面上指定了The Web Site vs. Web Application概念。这让我了解@Kashif在上述评论中所说的内容。

长话短说,我需要将其转换为Web应用程序项目才能实现。感谢您的努力和您提供的示例。这是最有帮助的!