2014-01-06 100 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的答案。他使用了不同的方法,但效果相同。無論哪種方式,你將不得不在客戶端使用腳本。 –