我有一个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表单
答案 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;
}