在多步骤应用程序中存储用户输入的最佳方式
本文关键字:输入 用户 最佳 方式 存储 应用程序 | 更新日期: 2023-09-27 18:05:24
我的程序由许多步骤组成。假设每个步骤都在tabpage
中,完成后,用户选择"下一步"。存储这些信息的最好/最快的方法是什么?
我通常会说,这将是一个保存所有数据的模型——一旦用户在最后一页说"ok",这些数据就会被转发给处理方法。但是这在很大程度上取决于实际使用场景,所以这可能不是最好的方法。
我创建了一个单独的类,为各个页面上的'答案'提供属性。我不确定这是否是最好的方法,但它对我来说非常有效。用户可以在页面之间来回切换,并存储答案。Prescott的观点是,如果它们以后需要回来,也许您可以将它们的部分形式保存为XML。
创建一个表示向导的视图模型,并在该视图模型中包含与您的步骤相关的所有数据。您还可以跟踪当前步骤,并实现一些方法来启用/禁用下一步和上一步按钮等。
实际的向导窗口和选项卡(视图)然后都与向导视图模型(数据)一起工作。
如果你只是想为程序执行保留这些信息,我会选择In-Memory Repository,例如
namespace Repository {
public class InMemoryRepository : IRepository{
static readonly List<Item> items = new List<Item> {
new Item("CurrentTaxRate", 20m),
new Item("CurrentAmount", 100m)
};
public Item Get(string name) {
return items.Single(x => x.Name == name);
}
}
}
public class Item {
public Item(string name, decimal value) {
Name = name;
Value = value;
}
public string Name { get; private set; }
public decimal Value { get; private set; }
}
您可以轻松地添加,删除或编辑功能,并将这里的"Item"替换为您自己的"UserData"类型。
使用依赖注入来获取这些信息
public class TaxRate : ITaxRate {
private readonly IRepository repository;
public TaxRate(IRepository repository) {
this.repository = repository;
}
public decimal Get() {
var item = repository.Get("CurrentTaxRate");
return item.Value;
}
}