Откройте файл .pdf в новой вкладке - PullRequest
0 голосов
/ 11 июня 2019

В моей форме есть ddl, который пользователь может выбирать между некоторыми файлами pdf.
Я хочу передать идентификатор выбора пользователя (он содержит полный путь к 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
Заранее благодарим за помощь.

1 Ответ

0 голосов
/ 12 июня 2019

Решение предоставлено @ADyson

<script type="text/javascript">
  $(document).ready(function () {
    $("#FCodeID").on ("change", function () {
      var url = "../MaterialsFiles" + this.value;;
      window.open(url, '_blank');
    })
  })
</script>

Кроме того, я изменяю строку .value в моем JsonResult следующим образом:

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"));
}

Наконец, я добавляю новый виртуальный тип:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...