C# 我可以用什么来标记事件?

C# 我可以用什么来标记事件?,c#,asp.net,C#,Asp.net,我有一个asp网络表单,我需要在点击按钮时做笔记。 我需要知道上次保存信息时单击了什么按钮。 例如,有人单击按钮“创建新条目”-我将使静态bool newflag=true。我删除-静态bool delflag的情况将是=true 但我需要在所有程序中控制它-当它为真或为假时,当我有大约4个标志时,这是很困难的。 也许有人知道另一种方法我怎样才能成功? C#ASP.NET Web表单在ASP.NET中是个坏主意。您的所有用户都将共享同一个标志,如果单击“删除”,其他所有用户也将被标记为“删除”。

我有一个asp网络表单,我需要在点击按钮时做笔记。 我需要知道上次保存信息时单击了什么按钮。 例如,有人单击按钮“创建新条目”-我将使
静态bool newflag
=true
。我删除-
静态bool delflag
的情况将是
=true

但我需要在所有程序中控制它-当它为真或为假时,当我有大约4个标志时,这是很困难的。
也许有人知道另一种方法我怎样才能成功?

C#ASP.NET Web表单在ASP.NET中是个坏主意。您的所有用户都将共享同一个标志,如果单击“删除”,其他所有用户也将被标记为“删除”。相反,您可以使用会话。如果您想将多个可读和可维护的信息存储在为此目的而创建的特殊类型中,下面是一个自定义类,其中包含一个字典和一个自定义枚举作为键

密钥的枚举:

public enum EntryEventType
{
    Undefined = 0,
    NewEntry = 1,
    DeletedEntry = 2, 
    // ....
}
封装事件信息及其状态和上次更新信息的类:

public class EntryEvent
{
    public EntryEvent(EntryEventType type)
    {
        EventType = type;
    }
    public EntryEventType EventType { get; set; }
    public bool? Flag { get; private set; }
    public DateTime? LastChanged { get; private set; }

    public static EntryEvent GetTrue(EntryEventType type)
    {
        var e = new EntryEvent(type);
        e.SetFlag(true);
        return e;
    }

    public static EntryEvent GetFalse(EntryEventType type)
    {
        var e = new EntryEvent(type);
        e.SetFlag(false);
        return e;
    }

    public void SetFlag(bool flag)
    {
        Flag = flag;
        LastChanged = DateTime.Now;
    }
}
封装字典以存储每个事件类型信息的类:

public class UserEntryFlags
{
    private readonly Dictionary<EntryEventType, EntryEvent> UserEntryFlagDict = new Dictionary<EntryEventType, EntryEvent>();

    public UserEntryFlags()
    {
        UserEntryFlagDict.Add(EntryEventType.NewEntry, new EntryEvent(EntryEventType.NewEntry));
        UserEntryFlagDict.Add(EntryEventType.DeletedEntry, null);
        // ...
    }

    public EntryEvent this[EntryEventType type]
    {
        get
        {
            return UserEntryFlagDict[type];
        }
        set
        {
            UserEntryFlagDict[type] = value;
        }
    }
}

static
在ASP.NET中是个坏主意。您的所有用户都将共享同一个标志,如果单击“删除”,其他所有用户也将被标记为“删除”。相反,您可以使用
会话
。如果您的问题很难理解,您应该更好地组织它。@Аааббббббббббббббббб107,它存储在每个用户群的服务器内存中,因此可以在页面生命周期内生存@Аббббббббб:您需要吗?我觉得太过分了。当然,您可以让它更简单、更简洁,我只是想说明您可以以可读的方式存储会话中的所有内容。未删除。顺便说一句,您还可以将会话处理封装在
UserEntryFlags
中,以便在会话中存储或读取它的属性(如果需要)。
protected void CreateNewEntry(Object sender, EventArgs e)
{
    var entryFlags = Session["UserEntryFlags"] as UserEntryFlags;
    if (entryFlags == null) entryFlags = new UserEntryFlags();
    entryFlags[EntryEventType.NewEntry] = EntryEvent.GetTrue(EntryEventType.NewEntry);
    Session["UserEntryFlags"] = entryFlags;
}
protected void DeleteNewEntry(Object sender, EventArgs e)
{
    var entryFlags = Session["UserEntryFlags"] as UserEntryFlags;
    if (entryFlags == null) entryFlags = new UserEntryFlags();
    entryFlags[EntryEventType.DeletedEntry] = EntryEvent.GetTrue(EntryEventType.DeletedEntry);
    Session["UserEntryFlags"] = entryFlags;
}