C# ASP.NET中的通用用户控件?

C# ASP.NET中的通用用户控件?,c#,asp.net,user-controls,C#,Asp.net,User Controls,我目前正在开发一个ASP.NET应用程序,我想为某个页面创建一个动态选项卡/用户控件结构,以便动态显示某些选项卡及其用户控件 此控件中的所有控件都将具有相同的属性-JobID和RevisionID。我曾考虑将其存储在每个控件的ViewState中,但我不想不必要地重复以下内容: public long? JobID { get { return ViewState["JobID"] != null ? (long)ViewState["JobID"] : (long?)null; } set {

我目前正在开发一个ASP.NET应用程序,我想为某个页面创建一个动态选项卡/用户控件结构,以便动态显示某些选项卡及其用户控件

此控件中的所有控件都将具有相同的属性-JobID和RevisionID。我曾考虑将其存储在每个控件的ViewState中,但我不想不必要地重复以下内容:

public long? JobID { get { return ViewState["JobID"] != null ? (long)ViewState["JobID"] : (long?)null; } set { ViewState["JobID"] = value; } }
public long? RevisionID { get { return ViewState["RevisionID"] != null ? (long)ViewState["RevisionID"] : (long?)null; } set { ViewState["RevisionID"] = value; } }

我希望所有用户控件都能访问某些方法。实现这一目标的最佳方式是什么?我考虑的是接口或抽象类,但我猜我需要能够访问接口/抽象类中的ViewState,这是我遇到的一些困难。

如果这些属性和方法都由用户控件利用,那么这样如何:

public abstract class MyBaseUserControl : UserControl
{
    // shared properties and methods
}
然后在构建用户控件时:

public class YourUserControl : MyBaseUserControl
MyBaseUserControl
可以驻留在程序集中的某个基本
.cs
文件中。此外,我将
MyBaseUserControl
列为
abstract
的唯一原因是它严格地构建为从中继承