我正在构建一个ASP.NET MVC应用程序,该应用程序具有许多页面,允许用户请求不同的自动工作流程'提交。用户选择流程,填写表格并点击提交。当模型重新发布回MVC时,我的代码会将模型数据复制到“流程”中。然后将该对象发送到流请求服务。
Flow对象包含一个名为InputMap的字典,它将工作流服务所期望的输入名称映射到模型的属性。
我的请求服务在控制器中被调用 - 请求服务从模型接受流对象,将其发送到工作流基础结构,然后序列化流对象并将其存储在数据库中。我希望用户能够通过反序列化持久流对象并重新填充视图来重新请求工作流。
我在模型上使用两种方法进行流程更新和重新加热,如下所示:
namespace AutomationForms.Models
{
public class FileTransfer
{
public string RequestNumber { set; get; }
public string HostName { set; get; }
public string CurrentPartner { get; set; }
public string PartnerSearch { get; set; }
public Dictionary<String,Flow> Flows { get; set; }
public FileTransfer()
{
Flows = new Dictionary<String, Flow>();
Update();
}
public void Update(){
//CFT_Install Flow
var cftInstall = new Flow("CFT Install");
cftInstall.InputMap["hostname"] = HostName ?? "";
cftInstall.InputMap["partner"] = CurrentPartner ?? "";
Flows[cftInstall.Name] = cftInstall;
//CFT_Update Flow
var cftUpdate = new Flow("CFT Update");
cftUpdate.InputMap["snRequestId"] = RequestNumber ?? "";
cftUpdate.InputMap["partner_search"] = PartnerSearch ?? "";
Flows[cftUpdate.Name] = cftUpdate;
}
public void Reheat(Flow flow)
{
HostName = flow.InputMap["hostname"] ?? "";
CurrentPartner = flow.InputMap["partner"] ?? "";
RequestNumber = flow.InputMap["snRequestId"] ?? "";
PartnerSearch = flow.InputMap["partner_search"] ?? "";
}
}
}
我可以说这不是idomatic MVC和/或是糟糕的OO设计 - 我觉得必须有一种更简单的方法来双向绑定&#39;流程和模型属性自动组合在一起,所以我可以: -
任何人都可以帮我解决这个问题吗?