asp.net - 如何为 .aspx 页面创建多个代码隐藏文件

标签 asp.net c#-4.0 code-behind

我遇到了一种情况,我需要在 c# asp.net 中为单个 .aspx 页面创建多个代码隐藏文件。实际上,我有一个网络表单,上面的大量编码已经完成,我需要多个开发人员同时处理它。我怎样才能达到同样的效果?

这是我尝试过的代码片段

类 1 MyPartialClass.cs

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void PrintText(string pt)
        {
            Response.Write(pt);
            //lblTest.Text = pt;    //Can not access this label in partial class.
        }
    }
}

类 2,即 Default.aspx.cs

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            PrintText("Hello World");
        }
    }
}

和我的 HTML 源代码

<%@ Page Language="C#" AutoEventWireup="false" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

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

最佳答案

ASP.NET 将始终将文件背后的代码生成为部分类

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

因此,如果您将定义保留为 partial 并将类保留在同一命名空间下,则可以将后面的代码分离到不同的文件中。

编辑:网络项目

//Default.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"     AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:Label ID="lblTest" runat="server" Text="Label"></asp:Label>
</asp:Content>

//Default.aspx.cs
namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            PrintText("Hello World");
        }
    }
}

//MyPartialClass.cs
namespace WebApplication1
{
    public partial class Default
    {
        protected void PrintText(string pt)
        {
            Response.Write(pt);
            lblTest.Text = pt;    //lblTest is accessible here
        }
    }
}

我没有修改任何其他生成的文件。我想提到的一件事是,已生成的 Default.aspx.cs 文件是使用类名“_Default”生成的。我已将其更改为 Default,Visual Studio 重构了包含该类定义的所有文件的更改,但 Default.aspx 文件除外,我必须手动修改该文件从 Inherits="WebApplication1._Default"Inherits="WebApplication1.Default"

编辑2:

我一直在网上搜索,根据http://codeverge.com/asp.net.web-forms/partial-classes-for-code-behind/371053 ,你想做的事情是不可能的。相同的想法详见 http://codeverge.com/asp.net.web-forms/using-partial-classes-to-have-multiple-code/377575 如果可能,请考虑从网站转换为 Web 应用程序,这支持您想要实现的目标。以下是有关如何执行此转换的演练: http://msdn.microsoft.com/en-us/library/vstudio/aa983476(v=vs.100).aspx

关于asp.net - 如何为 .aspx 页面创建多个代码隐藏文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996069/

相关文章:

c# - 尝试在 gridview 标题中的文本框中设置值

asp.net - 如何在 Visual Studio 2008 中为 ASP.NET 添加页面事件

c# - AJAX 脚本管理器 PageMethod 并不总是被调用

c# - 路由事件 "the member is not recognized or is not accessible"

asp.net - web.config 授权是否适用于 aspx 以外的文件?

c# - 带有用户控件的延迟加载选项卡

c# - 如何加速 C# 的 MongoDB 反序列化

c# - ajax.dll 在 iis 7 中不起作用

c# - 使用 Linq to XML 删除父元素

c#-4.0 - 接口(interface)协方差问题