2014-01-06 33 views

回答

0

我已经完成了这个确切的事情,它是基于一个按钮,它会根据参数触发多个窗口。这是你可以做的。你的控制器会是这样......

[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循环里面的脚本,它将工作

+0

如果我将一个actionlink与一个视图和一个对象一起传递,window.open将不起作用......它将在同一个窗口中显示所有内容。 – Natalia

0

只是要打开的客户端信息的链接(<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"}) 

这将打开一个新的浏览器选项卡与您需要的页面。

0

这将不可能通过使用本机MVC 4.然而,人们可以想到一些可能类似于您的要求的解决方法。对于初学者来说,是否有必要为每个客户实际打开一个“浏览器选项卡”,或者这也可能是一个HTML文档中每个客户端的选项卡页面。如果后者是一个选项,您可以看看HTML中提供的不同“标签”控件。

如果您确实需要为每个客户端创建一个新的浏览器窗口,我的提示是将可能的客户端列表返回到一个HTML页面,然后在该HTML页面中使用脚本来为每个客户端打开一个弹出窗口。对于每个弹出窗口/客户端,都需要向服务器发送附加请求。

+0

是的,我想每个客户一个新的浏览器窗口从控制器自动打开。所以对于这个脚本,你正在谈论使用AJAX? – Natalia

+0

不需要。您不需要使用AJAX,除非您想使用JQuery类似的东西来创建一个页面内弹出窗口或类似的东西。您可以简单地对一组客户端名称/标识使用脚本来动态创建要在新窗口中打开的URL。看看CSharper的答案。他使用了不同的方法,但效果相同。无论哪种方式,你将不得不在客户端使用脚本。 –

相关问题