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

时间:2013-08-07 15:40:36

标签: 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(model => model.report3) Report3

<input type="submit" value="Index" />

控制器代码段

[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
}

我需要在多个标签页中打开报告。我已经对它进行了广泛的研究,看起来你无法从控制器中打开多个标签,所以我很茫然。我考虑将url放在一个列表中,将它们传递给View,并使用JavaScript在页面加载时打开它们,但老实说我不确定如何在Javascript和MVC中这样做。

1 个答案:

答案 0 :(得分:1)

正如您已经发现的那样,无法从服务器端进行此操作,因此请将报告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>
}

请记住,弹出窗口阻止程序很可能会阻止它,所以你应该以某种方式告诉用户。也许在你的情况下保持页面上的链接是有用的(所以删除我的脚本的最后一行),让用户有机会在被阻止时手动打开它们......