私はいくつかのデータを(フォームではなく)ロードし、それらのフィールドの1つはファイルです。ViewBagからファイルをロードしますか?
<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>
Iは、私は、ファイルシステム(ないデータベース)に格納されたファイルの詳細情報を取得し、ViewBag.fileIdファイルのIDに戻ります。だから...ファイルの場所(フォルダパス)とファイル名。
RazorでIOを使用してファイルを入力にロードすることはできますか?と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;
});
一般に、ViewBagでデータを渡すのは悪い習慣と考えられます。厳密に型指定されたビューモデルとHttpPostedFileクラスをフィールドとして使用することをお勧めします。 – JDupont
質問を再読しました。サーバーからファイルを提供しようとしているのか、ユーザーがファイルをサーバーにアップロードしようとしていますか?後で(*クライアントがサーバーにファイルを送信する*)私の答えが正しくないが、私はそれを私の推薦で書き直すことができます。 – Igor
ユーザーがファイルをアップロードし、Add.cshtmlで送信したらサーバーに保存してから、Audit.cshtmlファイルから戻って情報を修正したいのですが、ファイルを 'constructData'に再度ロードする必要があります。 JavaScriptで。 –