C# 两个浏览器窗口中的web应用程序(ASP.NET MVC)

C# 两个浏览器窗口中的web应用程序(ASP.NET MVC),c#,javascript,html,asp.net-mvc,C#,Javascript,Html,Asp.net Mvc,我们正在构建一个ASP.NET MVC web应用程序,供公司内部使用。由于业务的性质,如果我们给用户很大的屏幕空间,他们的工作效率会更高。我们的计划是为每个用户提供两个24英寸的监视器,并相应地设计应用程序的页面。我们希望为这两个监视器使用两个浏览器窗口 带有输入表单的主窗口(左侧) 查看器窗口可显示附件的窗口(右侧) 当用户在主窗口中进行某些更改时,我希望通过在主窗口中设置新的URL来重新呈现查看器窗口。但是在主窗口中发生事件时,如何使查看器窗口加载新页面?准确地说,我希望查看器窗口加载

我们正在构建一个ASP.NET MVC web应用程序,供公司内部使用。由于业务的性质,如果我们给用户很大的屏幕空间,他们的工作效率会更高。我们的计划是为每个用户提供两个24英寸的监视器,并相应地设计应用程序的页面。我们希望为这两个监视器使用两个浏览器窗口

  • 带有输入表单的主窗口(左侧)
  • 查看器窗口可显示附件的窗口(右侧)

当用户在主窗口中进行某些更改时,我希望通过在主窗口中设置新的URL来重新呈现查看器窗口。但是在主窗口中发生事件时,如何使查看器窗口加载新页面?准确地说,我希望查看器窗口加载相同的页面,但参数已更改(不同的文档ID)在URL中。

我建议查看Signal

这里有更多的信息

这是一种从服务器向客户端发送信号以更新信息的方法

编辑

仔细考虑之后,使用信号器的情况太简单了

在javascript中,可以使用window.open打开新窗口。 当您这样做时,您可以给该窗口命名

如果窗口已经打开,则更新窗口;如果窗口尚未打开,则打开窗口


这样做的缺点是,视图窗口将“绑定”到主窗口的实例。因此,如果两个窗口都打开。关闭并重新打开主窗口,它将在下次调用window.open时打开视图窗口的第二个实例。

我建议查看信号器

这里有更多的信息

这是一种从服务器向客户端发送信号以更新信息的方法

编辑

仔细考虑之后,使用信号器的情况太简单了

在javascript中,可以使用window.open打开新窗口。 当您这样做时,您可以给该窗口命名

如果窗口已经打开,则更新窗口;如果窗口尚未打开,则打开窗口


这样做的缺点是视图窗口将被“绑定”"到主窗口的实例。因此,如果两个窗口都打开。关闭并重新打开主窗口,它将在下次调用window.open时打开视图窗口的第二个实例。

我会将其构建为两个单独的页面,彼此一无所知。然后让用户在单独的选项卡中,在单独的屏幕上打开这两个页面。对于输出屏幕我会使用SignalR(正如Smeegs已经提到的)或ajax来显示系统中可用的新信息。

我会将其构建为两个单独的页面,彼此一无所知。然后让用户在单独的屏幕上的单独选项卡中打开这两个页面。对于输出屏幕,我会使用SignalR(正如Smeegs已经提到的)或ajax来显示系统中可用的新信息。

+1对于这种项目,我建议SignalR不要专门打开这样的窗口。如果你看看微软CRM带来的噩梦,它可以打开“编辑”屏幕没有使其成为模型,用户很快就会困惑不已。打开两个浏览器实例也可以让他们彼此独立地控制每个屏幕。另一个问题是,强制“查看器”在第二个屏幕上打开。也许用windows窗体包装一个浏览器实例以更好地控制它?可能性是无穷的。甚至可以执行setTimeout来轮询新的更改等SignalR better+1我建议SignalR用于此类项目。我会特别避免这样打开窗口。如果你看看梦魇话筒rosoft CRM具有打开“编辑”屏幕而不使其成为模型的功能,用户很快就会感到困惑而不再沮丧。打开两个浏览器实例也可以让他们彼此独立地进行控制。另一个问题是,强制“查看器”在第二个屏幕上打开。可能将浏览器实例包装为windows窗体以更好地控制它?可能性是无穷的。甚至可以执行setTimeout以轮询新的更改等SignalR better此处可能有几种方法可供选择。但这不是一项简单的任务。例如,您可以使用SignalR与secondar进行通信y窗口响应主窗口触发的事件。或者,您可以通过JavaScript生成辅助窗口,在这种情况下,其JavaScript代码可以与父窗口通信。(在这种情况下,您实质上是在两个窗口中都讨论SPA,因此需要大量JavaScript和AJAX,而不是大量回发。)我已经用一个更简单的解决方案更新了我的答案。这里可能有两种方法。不过,这不是一个简单的任务。例如,您可以使用Signal与辅助窗口通信,以响应主窗口触发的事件。或者您可以通过JavaScript生成辅助窗口,在这种情况下,它是JavaScript代码可以与父窗口进行通信(在这种情况下,您实际上是在两个窗口中都讨论SPA,所以需要大量JavaScript和AJAX,而不是大量回发)。我已经用一个更简单的解决方案更新了我的答案
$(function () {
    $("#btnGoogle").click(function () {        
        window.open("http://www.google.com", "testChildWindow");
    });
    $("#btnBing").click(function () {
        window.open("http://www.bing.com", "testChildWindow");
    });
});