将代码拆分为多个文件
我有一个代码背后的代码太大了。 我需要在控制同一页面的文件背后分解为多个代码。 我看到它使用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:
我的问题与这个问题是一样的,但对于VB(不应该是一个区别,但不知何故)。
我刚刚在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
@the_lotus - 我认为上面提到的@ Kashif,问题在于成为一个网站而不是Web应用程序。 我的项目设置为一个网站。 Web应用程序编译成单个程序集,允许通过多个文件访问aspx页面成员。 网站编译成多个程序集,因此,aspx页面成员被锁定到指定的CodeFile中。 我没有意识到这一点,直到我看了你的例子,并注意到你使用CodeBehind而不是CodeFile。 然后,我参考了MSDN上的Page Directive手册页,并查看了两者之间的区别。 该网页上指定了网站与Web应用程序概念。 这让我明白@Kashif在上述评论中所谈论的内容。
长话短说,我需要将它变成一个Web应用程序项目才能使其工作。 感谢你的努力和你提供的例子。 这是最有帮助的!
链接地址: http://www.djcxy.com/p/65213.html上一篇: Split code behind into multiple files
下一篇: vb.net it may be inaccessible due to its protection level