ASP.NET表单和代码隐藏继承
首先,一些基本细节:ASP.NET表单和代码隐藏继承,.net,asp.net,inheritance,webforms,code-behind,.net,Asp.net,Inheritance,Webforms,Code Behind,首先,一些基本细节: 我正在使用VisualStudio2008团队版 我将C#ASP.NET2.0用于一个Web项目(不是MVC) 问题 我有一个用户创建表单,但是我也需要一个表单来编辑用户详细信息,这在设计方面是相同的,除了它将预加载值并在表单按钮的单击事件中使用备用逻辑之外 我不想简单地创建此页面的副本,因为在.aspx和aspx.cs文件中都会有大量重复的代码(我需要对其他几个表单执行相同的操作) 我使用C#.NET WinForms已经有一段时间了,但这是我第一次真正使用ASP.N
- 我正在使用VisualStudio2008团队版
- 我将C#ASP.NET2.0用于一个Web项目(不是MVC)
- 使用嵌套母版页以继承网站的全局布局,并包含基本表单
- 将嵌套母版页上的控件设置为受保护,而不是私有
- 创建“添加”和“编辑”用户页,继承嵌套母版页,同时继承嵌套母版页的类,以获得对其所有控件的访问权(我在某个地方读到,您无法继承其他页…还不确定母版页是否也是如此?)
- 然后,我需要覆盖DoUserSubmit_Click(我表单的按钮)事件,以便在每个页面上使用创建或编辑逻辑
- 还需要使用编辑页面上的Page_Load事件来填充所有嵌套母版页输入的值
/// <summary>
/// This method is what contains the logic to perform once the form has been submitted.
/// </summary>
protected abstract void DoPostBack();
protected void DoRegister_Click(object sender, EventArgs e)
{
if (IsPostBack) //Would prefer to do IsValid check here.
{
DoPostBack();
}
}
结束编辑
我还考虑为每个表单创建用户定义的控件,并在每个页面上使用它,必要时公开事件。然而,从我所读到的,这不允许设计与逻辑的适当分离,就像代码隐藏一样。尽管我承认,我自己还没有试过
我不想深入研究我目前的设计选择,因为可能有一个更好的解决方案我还没有想到
非常感谢您的建议。谢谢 我认为最简单的解决方案是创建一个用户控件(
.ascx
文件)来封装逻辑。控件可以公开一些事件(例如,Submit
),您可以订阅这些事件以执行自定义逻辑
您可能仍然有两个不同的页面,但在上述情况下,您不需要复制粘贴几乎相同的代码
--Pavel我刚刚在一个用户控件中实现了表单,它运行得非常好。除此之外,目前控件中仍然不存在IsValid。我会进一步调查。是的,与一些论坛帖子相反,Page.IsValid对我来说工作正常。必须将表单标记移到控件之外,但除此之外,它看起来运行良好。感谢您的快速解决方案!
protected override void DoPostBack()
{
if (IsValid) //IsValid doesn't exist in this context.
{
//My logic here...
}
}