从ViewBag载入文件?

和拉莫斯

我有一个Razor页面,我在其中加载了一些数据(不是表格形式),并且这些“字段”之一是一个文件。

<div class="col-sm-3">
   <label>Upload Construction Map:</label>
   <br />
   <div class="input-group">
      <span class="input-group-btn">
         <span class="btn btn-primary btn-file">
            Browse @Html.TextBoxFor(m => m.ShapeFileModel.ConstructFile, new { id = "fu-construct", type = "file", accept = ".pdf" })
         </span>
      </span>
      @{
         if (fileId != "")
         {
            int theId = int.Parse(fileId);
            CrossCData.DAL.File fileMap = (from f in dbCrossingsCloud.Files
                                           where f.Id == theId
                                           select f).SingleOrDefault();
      <input type="text" id="txtPathConstruct" class="form-control" value="@fileMap.FileName" contenteditable="false" readonly />
         }
         else
         {
      <input type="text" id="txtPathConstruct" class="form-control" value="" contenteditable="false" readonly />
         }
      }
   </div>
</div>

我在ViewBag.fileId中返回文件的ID,然后获取存储在文件系统(而非数据库)中的文件的详细信息。所以...文件位置(文件夹路径)和文件名。

是否可以在Razor中使用IO将文件加载到输入中?和一个JavaScript变量?

任何帮助将不胜感激!

我用来管理文件的Javascript

$("#fu-construct").fileupload({
        url: 'UploadConstructFile',
        dataType: 'json',
        // File was added
        add: function (e, data) {
            var fileExtension = ['pdf'];  // Valid file extensions
            if ($.inArray($("#txtPathConstruct").val().split('.').pop().toLowerCase(), fileExtension) == -1) {
                swal("Error", "Only PDF files are allowed. Please select a file in PDF format.", "error");
                $("#txtPathConstruct").val("No file chosen...");
                constructData = null;
            } else {
                constructData = data;
            }
        },
        // UploadConstructFile is done
        done: function (event, data) {
            fileId = data.result.fileId;
            if (projectCompany == "" || typeof projectCompany == 'undefined') {
                swal("Error", "Please enter a requesting company", "error");
            }
            else if (projectName == "" || typeof projectName == 'undefined') {
                swal("Error", "Please enter a project name.", "error");
            }
            else if (projectType == "" || typeof projectType == 'undefined') {
                swal("Error", "Please select a project type.", "error");
            }
            else {
                post('Audit', 'post', JSON.stringify(myDataTable.rows().data().toArray()), fileId, projectCompany, projectName, projectType, projectFileNumber, projectAFECC);
            }
        },
        fail: function (event, data) {
            alert("Error uploading the file.");
            $("#txtPathShape").val("No file chosen...");
        }
    });

    $("#construct-upload").on('click', function () {
        if (constructData) {
            constructData.submit();
        }
        return false;
    });
伊戈尔

是否可以在Razor中使用IO将文件加载到输入中?和一个JavaScript变量?

Razor创建一个文本流,该文本流将被发送到浏览器。文本的内容(通常)应为html。如果要包含文件,则必须将其作为二进制文件的base64或文本文件的纯文本形式写入字段(可能是隐藏的输入类型)。我会避免这种方法,并且不会在视图本身中包含文件内容

更好的选择是创建一个MVC控制器方法或一种Web API可以基于唯一标识符提供文件服务方法(您提到的文件ID可能是完美的)。然后,您可以在Razor输出中包括标识符(而不是文件的内容),并可以在需要时使用来自JavaScript的AJAX调用来检索它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章