在Web浏览器的新选项卡中打开文件

时间:2017-10-31 06:46:22

标签: c# asp.net-mvc

我有一个视图,显示目录中的xml文件列表。我还有一个按钮,可以显示在浏览器中选择的文件名的内容。目前它在同一个标​​签中显示内容。但我想在浏览器的新标签中显示它.. 例如,如果我从列表中选择两个文件名,那么它应该为这两个文件打开不同的选项卡。 请找到以下代码。

public ActionResult ViewFile(string[] Name)
{
byte[] ImageData = null;

for (int i = 0; i < Name.Length; i++)
{

string filepath = holdpath + @"\" + Name[i];
string result;
using (StreamReader streamReader = new StreamReader(filepath))
{
result = streamReader.ReadToEnd();

}
using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream())
{
Document document = new Document(PageSize.A4, 10, 10, 10, 10);
PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
document.Open();

Paragraph paragraph = new Paragraph();
paragraph.Add(result);
document.Add(paragraph);

document.Close();
ImageData = memoryStream.ToArray();
}


}
Response.AppendHeader("Content-Disposition", "inline; filename=MyFile.pdf");
return File(ImageData, "application/pdf");
}

请注意我使用的是itextsharp,因为如果需要,该文件也需要以pdf格式下载

我已在此处添加了视图

@model IEnumerable<FileInfo>
@{
ViewBag.Title = "files";
}

<h2>Held files</h2>
@using (Html.BeginForm())
{
<div style="border:solid;width:100%;overflow-x:auto;">
<table  align="center" style="width:100%">
<thead>
<tr>
<th>File Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach (FileInfo file in Model)
{
<tr>

<td>
<input type="checkbox" name="Name" value="@file.Name" />
@file.Name
</td>
<td>
@Html.ActionLink("View", "ViewFile", "HoldFiles", new { Name = file.Name }, 
new { @class = "btn btn-primary btn-sm", target = "_blank" })

</td>        
</tr>

}
</tbody>
</table>
</div>
}

1 个答案:

答案 0 :(得分:3)

在您的视图中,将target="_blank"放在您的锚元素上。

例如:

<a href="https://www.url.com" target="_blank">Open in new tab</a>

或者如果使用剃刀:

@Html.ActionLink("Text", "ActionMethodName", "ControllerName", new { id = Model.Id }, new { @class = "btn btn-primary btn-sm", target = "_blank" })