C# 在ASP.NET MVC中打开多个链接?

C# 在ASP.NET MVC中打开多个链接?,c#,javascript,asp.net-mvc,C#,Javascript,Asp.net Mvc,我有一个应用程序,它从视图中获取一些用户输入,用户需要的报告,并在控制器中从中创建一个参数字符串,我需要在创建查询字符串后打开多个报告URL,但不确定如何: 查看片段: @Html.EditorFor(model => model.Id) @Html.CheckBoxFor(model => model.report1) Report1 @Html.CheckBoxFor(model => model.report2) Report2 @Html.CheckBoxFor(mo

我有一个应用程序,它从视图中获取一些用户输入,用户需要的报告,并在控制器中从中创建一个参数字符串,我需要在创建查询字符串后打开多个报告URL,但不确定如何:

查看片段:

@Html.EditorFor(model => model.Id)
@Html.CheckBoxFor(model => model.report1)  Report1
@Html.CheckBoxFor(model => model.report2) Report2
@Html.CheckBoxFor(model => model.report3) Report3

<input type="submit" value="Index" />
@Html.EditorFor(model=>model.Id)
@Html.CheckBoxFor(model=>model.report1)report1
@Html.CheckBoxFor(model=>model.report2)report2
@Html.CheckBoxFor(model=>model.report3)report3
控制器代码段

[HttpPost]
public ActionResult Index(ViewModel model) {

string parameters="&id="+model";

if(model.report1==true) 
{
    string report1="http://<urlhere>"+parameters;
}
//CONTINUE for the other two reports as well
}
[HttpPost]
公共行动结果索引(视图模型){
字符串参数=“&id=“+model”;
if(model.report1==true)
{
string report1=“http://”+参数;
}
//继续查看其他两个报告
}

我需要在多个选项卡中打开报告。我已经对其进行了广泛的研究,似乎无法从控制器中打开多个选项卡,因此我不知所措。我考虑过将URL放入列表中,将其传递到视图中,并使用JavaScript在页面加载时打开它们,但我真的不确定如何在JavaScript和m中做到这一点VC.

因为您已经发现这在服务器端是不可能的,所以请将报告URL传递给客户端,并使用类似以下JavaScript的内容:

@if (!String.IsNullOrWhiteSpace(Model.ReportUri))
{
    <a id="reportLink" href="@Model.ReportUri" target="_blank">REPORT</a>
    <script type="text/javascript">
        var link = document.getElementById('reportLink');
        link.click();
        link.parentNode.removeChild(link);
    </script>
}
@if(!String.IsNullOrWhiteSpace(Model.ReportUri))
{
var link=document.getElementById('reportLink');
link.click();
link.parentNode.removeChild(link);
}

请记住,弹出窗口拦截器很可能会阻止此操作,因此您应该以某种方式告诉用户。此外,在您的情况下,保留页面上的链接也可能有用(因此请删除我脚本的最后一行)为了让用户有机会在被阻止时手动打开它们…

也许你可以使用PartialView实现这一点。只需显示指向多个结果的链接。在页面视图中打开链接可能会使弹出窗口阻止程序出错。要求用户单击链接的可用性比要求用户禁用弹出窗口阻止程序的可用性更不值得怀疑在部分浏览器设置对话框中,它们以前从未见过。根据HTTP协议设计,每次请求只能发送一个文件。通过JavaScript弹出文件也不是一个好主意。