c# - 在新选项卡中打开 .pdf 文件
问题描述
在我的表单中,我有一个 ddl,用户可以在一些 pdf 文件之间进行选择。
我想将用户选择的 ID(它包含 pdf 的完整路径)传递给 window.open 命令。
//This is the div that contains the data
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
<label asp-for="FDescr" class="control-label">File</label>
<select asp-for="FCodeID" class="form-control"
asp-items="@(new SelectList(string.Empty, "FCodeID", "FDescr"))"></select>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.js"></script>
//This is where I load the data in the #FCodeID ddl
<script type="text/javascript">
$(document).ready(function () {
$("#MCodeID").on("change", function () {
var url = '@Url.Content("~/")' + "Materials/GetFiles";
var ddlsource = "#MCodeID";
var items = "<option value='0'>--Select File--</option>";
$("#FCodeID").html(items);
var items = " ";
$.getJSON(url, { MCodeID: $(ddlsource).val() }, function (data) {
$("#FCodeID").empty();
$.each(data, function (i, file) {
if (file.value.includes("in Use"))
items += "<option value='" + file.value + "'" + "style='background-color:orange;'>" + file.text + "</option>";
else
items += "<option value='" + file.value + "'>" + file.text;
});
$("#FCodeID").html(items);
});
})
})
</script>
//This is what I'm trying to accomplish
<script type="text/javascript">
$(document).ready(function () {
$("#FCodeID").on ("change", function () {
var url= "#FCodeID";
window.open(url, '_blank');
})
})
</script>
我想在 window.open() 上用我的文件的实际路径打开一个新选项卡。
ex 192.168.1.1/MyFiles/MyPDF.pdf
提前感谢您的帮助。
解决方案
@ADyson 提供的解决方案
<script type="text/javascript">
$(document).ready(function () {
$("#FCodeID").on ("change", function () {
var url = "../MaterialsFiles" + this.value;;
window.open(url, '_blank');
})
})
</script>
另外,我更改了 JsonResult 中的 .value 字符串,如下所示:
public JsonResult GetFiles(string MCodeID)
{
List<Files> filelist = new List<Files>();
//Searching Files in //192.168.1.191
string path = @"path to file srv";
string searchPattern = MCodeID + "*";
DirectoryInfo fi = new DirectoryInfo(path);
foreach (var file in fi.GetFiles(searchPattern, SearchOption.AllDirectories))
{
var changeSlash = file.FullName.Replace('\\', '/');
var filepath = changeSlash.Replace("path to file srv", "");
filelist.Add(new Files
{
FCodeID = filepath,
FDescr = file.Name + " - " + Math.Round((Convert.ToDouble(file.Length) / (1024 * 1024)), 2) + " MB",
});
}
filelist.Insert(0, new Files { FCodeID = "0", FDescr = "--Select File--" });
return Json(new SelectList(filelist, "FCodeID", "FDescr"));
}
最后,我添加了一个新的 Virtual,例如:
<site name="MaterialProject" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="path to solution local file" />
<virtualDirectory path="/MaterialsFiles" physicalPath="path to file srv" />
</application>
</site>
推荐阅读
- python - 使用 NaiveBayes 算法时如何使用 One-hot Encode?
- android - ARCore – 超过 24 小时的云锚点或超过 7 天的特征点
- c# - CMakeLists.txt:2 (INSTALL) 处的 CMake 错误:INSTALL DIRECTORY given no DESTINATION
- r - parLapply 和词性标注
- html - 哪个类将应用于 div,为什么?
- vue.js - 接收新数据时实体量规刷新(点值)
- ios - 在 iOS 上的百度地图中显示蓝色位置点
- javascript - Google 表单上的打卡和打卡系统
- spatstat - 为 ppp 对象生成聚集的 spatstat 标记
- hyperledger-fabric - 超级账本交易 基于某些第三种资源的参与者权限