C# 从历史重放MVC操作
我正在构建一个ASP.NET MVC应用程序,它有很多页面,允许用户请求提交不同的自动“工作流”。用户选择流,填写表单并点击提交。当模型发回MVC时,我的代码将模型数据复制到“Flow”对象中,然后将该对象发送到Flow请求服务 Flow对象包含一个名为InputMap的字典,该字典将工作流服务期望的输入名称映射到模型的属性 我的请求服务在控制器中被调用-请求服务从模型中接受流对象,将其发送到工作流基础结构,然后序列化流对象并将其存储在数据库中。我希望用户能够通过反序列化持久流对象并重新填充视图来重新请求工作流 我在我的模型上使用两种方法执行流程更新和重新加热,如下所示:C# 从历史重放MVC操作,c#,.net,asp.net-mvc,asp.net-mvc-4,object,C#,.net,Asp.net Mvc,Asp.net Mvc 4,Object,我正在构建一个ASP.NET MVC应用程序,它有很多页面,允许用户请求提交不同的自动“工作流”。用户选择流,填写表单并点击提交。当模型发回MVC时,我的代码将模型数据复制到“Flow”对象中,然后将该对象发送到Flow请求服务 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"] ?? "";
}
}
}
namespace AutomationForms.Models
{
公共类文件传输
{
公共字符串RequestNumber{set;get;}
公共字符串主机名{set;get;}
公共字符串CurrentPartner{get;set;}
公共字符串搜索{get;set;}
公共字典流{get;set;}
公共文件传输()
{
Flows=新字典();
更新();
}
公共无效更新(){
//安装流程
var cftInstall=新流量(“CFT安装”);
cftInstall.InputMap[“主机名”]=hostname???”;
cftInstall.InputMap[“合作伙伴”]=CurrentPartner;
流[cftInstall.Name]=cftInstall;
//CFT_更新流程
var cftUpdate=新流量(“CFT更新”);
cftUpdate.InputMap[“snRequestId”]=RequestNumber;
cftUpdate.InputMap[“合作伙伴搜索”]=PartnerSearch;
流[cftUpdate.Name]=cftUpdate;
}
公共空隙再热(流量)
{
HostName=flow.InputMap[“主机名”]??“”;
CurrentPartner=flow.InputMap[“partner”]??“;
RequestNumber=flow.InputMap[“snRequestId”]??“”;
PartnerSearch=flow.InputMap[“partner_search”];
}
}
}
我可以看出这不是idomatic MVC和/或是糟糕的OO设计-我觉得必须有一种更简单的方法来自动“双向绑定”流和模型属性,因此我可以:-