如何从控制器打开多个窗口?如何从asp.net中的控制器打开多个窗口MVC
例如,我有一个控制器可以获取所有客户端,并且对于每个客户我都希望他的信息显示在不同的窗口或选项卡中。 使用asp.net MVC 4可以吗?
如何从控制器打开多个窗口?如何从asp.net中的控制器打开多个窗口MVC
例如,我有一个控制器可以获取所有客户端,并且对于每个客户我都希望他的信息显示在不同的窗口或选项卡中。 使用asp.net MVC 4可以吗?
我已经完成了这个确切的事情,它是基于一个按钮,它会根据参数触发多个窗口。这是你可以做的。你的控制器会是这样......
[HttpPost]
public ActionResult CopyOpportunitySave(CopyOpportunityViewModel model)
{
ViewModel model = new ViewModel();
foreach (var url in "List object that contains URLS")
{
model.ClientURLs.Add(url);
}
return View("CopyOpportunity", model);
}
所以,现在你的模型类就会像 public List<string> ClientURLs{get; set;}
这是由你需要做的window.Open所有URL填充的属性。
和现在,在你的看法,你可以说
@foreach (var u in ViewModel.ClientURLs)
{
<script>
window.open(u);
</script>
}
就像只要得到执行foreach循环里面的脚本,它将工作
只是要打开的客户端信息的链接(<a></a>
)有target = "_blank"
:
<a href="Clients/Details/1" target="_blank"> John Smith </a>
如果您使用HTML辅助也可能是这样的:
@Html.ActionLink("John Smith", "Details", "Clients", new {id = 1}, new { target = "_blank"})
这将打开一个新的浏览器选项卡与您需要的页面。
这将不可能通过使用本机MVC 4.然而,人们可以想到一些可能类似于您的要求的解决方法。对于初学者来说,是否有必要为每个客户实际打开一个“浏览器选项卡”,或者这也可能是一个HTML文档中每个客户端的选项卡页面。如果后者是一个选项,您可以看看HTML中提供的不同“标签”控件。
如果您确实需要为每个客户端创建一个新的浏览器窗口,我的提示是将可能的客户端列表返回到一个HTML页面,然后在该HTML页面中使用脚本来为每个客户端打开一个弹出窗口。对于每个弹出窗口/客户端,都需要向服务器发送附加请求。
是的,我想每个客户一个新的浏览器窗口从控制器自动打开。所以对于这个脚本,你正在谈论使用AJAX? – Natalia
不需要。您不需要使用AJAX,除非您想使用JQuery类似的东西来创建一个页面内弹出窗口或类似的东西。您可以简单地对一组客户端名称/标识使用脚本来动态创建要在新窗口中打开的URL。看看CSharper的答案。他使用了不同的方法,但效果相同。无论哪种方式,你将不得不在客户端使用脚本。 –
如果我将一个actionlink与一个视图和一个对象一起传递,window.open将不起作用......它将在同一个窗口中显示所有内容。 – Natalia