Asp.net mvc 4 MVC4 Razor实时更新视图
我是一个相对的noob程序员,所以提前道歉 我正在使用MVC4和Razor进行编写,并且有一个用户选择视图,它可能导致从控制器发出许多web调用。我想更新结果视图 当这些web服务调用返回时,控制器会在一分钟内进行实时更新,尽管控制器似乎会等到所有web调用完成后再更新模型 以及渲染结果视图。我们尝试使用async并等待改进,但只取得了微小的成功 我遇到的其他问题是,我们正在使用内部框架,并在webcall返回后执行其他操作,例如日志记录\偶尔访问数据库,所有这些 导致控制员的行动持续相当长的一段时间 把它放在上下文中,这是一个监控应用程序,因此根据用户的选择,我们可能有0->几百个内部web服务调用,只需单击一个按钮 因此,本质上我想知道如何最好地处理这个问题,例如,在MVC4视图中,您有多个单独的web服务调用,其中一些可能是 冗长,例如最多60秒 我对如何改进的想法是Asp.net mvc 4 MVC4 Razor实时更新视图,asp.net-mvc-4,signalr,real-time,Asp.net Mvc 4,Signalr,Real Time,我是一个相对的noob程序员,所以提前道歉 我正在使用MVC4和Razor进行编写,并且有一个用户选择视图,它可能导致从控制器发出许多web调用。我想更新结果视图 当这些web服务调用返回时,控制器会在一分钟内进行实时更新,尽管控制器似乎会等到所有web调用完成后再更新模型 以及渲染结果视图。我们尝试使用async并等待改进,但只取得了微小的成功 我遇到的其他问题是,我们正在使用内部框架,并在webcall返回后执行其他操作,例如日志记录\偶尔访问数据库,所有这些 导致控制员的行动持续相当长的一
公共虚拟异步任务多命令(手动选择VM型号)
{
var viewObject=新的手动选择结果vm();
如果(型号!=null)
{
var input=newserviceinfo();
//根据用户选择从缓存中检索serviceInfo对象详细信息,它们是唯一的
列出selectedServiceInfoDetails=GetServiceInfoDetailsFromCache(GetSelectedServiceInfoId(模型));
列表输出=新列表();
IGenericPC pc=null;
尝试
{
pc=PCFactory.Create();
输出=等待pc.CallApprovariatecs(selectedServiceInfoDetails);
viewObject=ConvertServiceOutputIntoVM(输出);
}
最后
{
AICS.ARCHITECTURE.SERVICES.CLEANUP.CleanupSVC.CLEANUP(pc);
}
}
返回此.View(MVC.ManualSelection.Views.Result,viewObject);
}
public virtual async Task<ActionResult> MultipleCommand(ManualSelectionVM model)
{
var viewObject = new ManualSelectionResultVM();
if (model != null)
{
var input = new ServiceInfo();
//Retrieving serviceInfo object details from cache based on user selection, they are unique
List<ServiceInfo> selectedServiceInfoDetails = GetServiceInfoDetailsFromCache(GetSelectedServiceInfoIDs(model));
List<ServiceOutputCdt> output = new List<ServiceOutputCdt>();
IGenericPC pc = null;
try
{
pc = PCFactory.Create<IGenericPC>();
output = await pc.CallApproriateSCs(selectedServiceInfoDetails);
viewObject = ConvertServiceOutputIntoVM(output);
}
finally
{
AICS.ARCHITECTURE.SERVICES.CLEANUP.CleanupSVC.Cleanup(pc);
}
}
return this.View(MVC.ManualSelection.Views.Result, viewObject);
}