所以这里的解决方案非常适合我的需求(再次感谢 ps2goat 的提示)。
我的两页的基本结构是:
[namespace A]
Page.aspx
Page.aspx.cs
Page.aspx.designer.cs
和
[namespace B]
Page.aspx
Page.aspx.cs
Page.aspx.designer.cs
(假设我确实有超过 2 页)
我确实需要删除 .cs 和 .designer.cs 文件,同时能够引用 .aspx 页面中声明的服务器控件。
这不可能通过从基类继承的标准,也不能使用母版页:它们运行良好,但完全不知道子 ASPX 服务器控件。
所以,我创建了一个通用类文件
[namespace COMMON]
Page.cs
在这个文件中,我复制了两个原始命名空间的“.cs”分部类和“.designer.cs”分部类的内容(显然负责将命名空间更改为新命名空间)(它们在代码中是相同的) .
在 page.aspx 文件中,代码隐藏映射已从“Page.aspx.cs”和“A.Page”命名空间更新为“Page.cs”和“Common.Page”命名空间。
因此,文件从这些更改:
[Page.aspx](每个命名空间一个实例)
<%@ Page Title="Page" Language="C#" MasterPageFile="~/Page.Master" AutoEventWireup="true" CodeBehind="Page.aspx.cs" Inherits="Project.A.Page" %>
<asp:Content ID="ContentB" ContentPlaceHolderID="cBody" runat="server">
<asp:TextBox ID="txbTest" runat="server" MaxLength="75"></asp:TextBox>
</asp:Content>
[Page.aspx.cs](每个命名空间一个实例)
namespace Project.A
{
public partial class Page: BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
this.txbTest.Text = "Hello";
}
}
}
[Page.aspx.designer.cs](自动生成,每个命名空间一个实例)
namespace Project.A {
public partial class Page{
protected global::System.Web.UI.WebControls.TextBox txbTest;
}
}
对这些:
[Page.aspx](每个命名空间一个实例)
<%@ Page Title="Page" Language="C#" MasterPageFile="~/Page.Master" AutoEventWireup="true" CodeBehind="Page.cs" Inherits="Project.COMMON.Page" %>
<asp:Content ID="ContentB" ContentPlaceHolderID="cBody" runat="server">
<asp:TextBox ID="txbTest" runat="server" MaxLength="75"></asp:TextBox>
</asp:Content>
[Page.cs](一个 SINGULAR 实例,由旧 .cs 和 .designer 文件的内容制成)
namespace Project.COMMON
{
public partial class Page: BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
this.txbTest.Text = "Hello";
}
}
public partial class Page{
protected global::System.Web.UI.WebControls.TextBox txbTest;
}
}
然后我删除了页面的 .cs 和 .designer.cs 文件的每个实例,留下了我需要的结构,例如:
~/A/Page.aspx
~/B/Page.aspx
~/COMMON/Page.cs
它就像一个魅力!
所以,最后,我可以说,aspx在项目web软件的时候还是一个选择,这个项目的MVC移植可以等等。