2014-02-13 30 views
1

我有一个代码后面的文件变得太大了。我需要在控制同一页面的文件背后分解为多个代码。我看到它使用C#中的部分类完成,但不是在VB中完成。我试图实现部分类的概念,但它不编译或识别辅助文件中的页面控件。VB.NET - 分割后的代码到多个文件

这是我的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 =“服务器”)。我已经尝试了与类周围的声明命名空间无济于事。

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

Update/Edit: 

我的问题是一样的this question但对于VB(不应该有差别,但不知何故没有)。

+0

这两个文件中的所有导入语句都一样吗? – Lauren

+4

VS已经在做分部类,你可以看看Default.aspx.vb和Default.aspx.designer。vb如果代码变得太大,您可能需要考虑创建用户控件或从ui中删除业务逻辑。 –

+0

这应该是一个巨大的红色闪烁的灯光,字样“你做错了什么”为你打印。 – asawyer

回答

0

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

长话短说,我需要把它变成一个Web应用程序项目才能使它工作。感谢你的努力和你提供的例子。这是最有帮助的!

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 
相关问题