从C#类文件导航到Razor页面

时间:2016-10-28 18:30:18

标签: c# events razor

问题

我正在使用Razor Pages(.cshtml)开发一个网站,当用户点击按钮时,该网站使用Process.Start()异步运行控制台应用程序。我已将事件处理程序连接到进程的Exited事件,该事件在进程退出时调用。启动进程和处理exited事件都在一个C#类文件(.cs)中完成。处理退出事件时,将评估进程的ExitCode以确定要向用户显示的消息。

目前我正在尝试直接导航到View,其中包含处理和显示url参数的代码。此导航每次都失败。

的尝试

通过完全删除参数并尝试简单地重定向到页面,我推断出该参数不是问题。

当我尝试HttpContext.Current.Response.Redirect("~/Folder/File.cshtml)时,我得到了一个

  

NullReferenceException:未将对象引用设置为对象的实例。

当我尝试将HttpContext.Current从进行初始Process.Start()调用的Controller传递给C#类文件以用于Response.Redirect()时,我得到了

  

ArgumentException:值不在预期范围内。

的其他

事件由进程触发的事实可能无关紧要,因为核心问题似乎是从C#类文件重定向到Razor Page。我的目标是在流程完成后更新Razor View,以通知用户成功或失败。

1 个答案:

答案 0 :(得分:1)

为了以符合网络的方式解决这个问题,我建议使用以下方法之一:

如果启动的进程非常短暂:

在请求中启动进程时,请等待进程完成,然后再将请求返回给客户端。

如果该过程需要几秒钟才能完成:

在这种情况下,使用SignalR是一个很好的选择,因为它支持将消息从服​​务器推送到客户端。有关SignalR的详细信息和示例,请参阅此link

基本上,当请求到达服务器时,您就开始处理该项目。将视图返回给客户端,通知用户正在处理该项目。在处理完项目后,将消息推送到客户端。