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

时间:2017-07-17 14:29:35

标签: c# asp.net

我有一个asp网页表单,我需要在点击按钮时做笔记。 我需要知道在保存信息时最后点击了什么按钮。 例如,有人点击“创建新条目”按钮 - 我将static bool newflag = true。我将删除static bool delflag= true<div class="form-group"> <md-input-container> <input mdInput id="useramount" name="useramount" type="number" class="form-control " [(ngModel)]="amount" #useramount="ngModel" placeholder="amount" min="{{40 | number}}" max="{{300 | number}}" required/> <md-error *ngIf="amountFormControl.hasError('required')"> <span>{{'NOT_VALID_FIELD'| translate}} </span> </md-error> <md-error *ngIf="amountFormControl.hasError('min')" > <span>{{'FIELD_MIN_VAL'| translate}}</span> </md-error> <md-error *ngIf="amountFormControl.hasError('max')" > <span>{{'FIELD_MAX_VAL'| translate}}</span> </md-error> </md-input-container> </div>

但是我需要在所有程序中控制它 - 当它为真或当它为假时,当我有大约4个标志时,很难。 也许有人知道我怎样才能做到这一点? C#ASP.NET Web表单

1 个答案:

答案 0 :(得分:1)

static在ASP.NET中是一个坏主意。如果单击一下,您的所有用户都将共享相同的标记&#34;删除&#34;它被标记为&#34;删除&#34;对于其他每个用户。相反,您可以使用会话。如果要存储为此目的而设计的特殊类型的可读和可维护的多个信息,这里是一个自定义类,其中包含字典和自定义枚举作为键。

密钥的枚举:

public enum EntryEventType
{
    Undefined = 0,
    NewEntry = 1,
    DeletedEntry = 2, 
    // ....
}

用于封装event-info及其状态和最新更新信息的类:

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;
        }
    }
}

此类的实例可以存储在会话中:

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;
}