我有一个视图,显示目录中的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>
}
答案 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" })