【发布时间】:2016-03-03 11:57:39
【问题描述】:
这是 ASP.NET 代码:
<div class="row1" style="padding: 3px">
<asp:Button Text="Select" ID="btnDescColumn" runat="server" OnClick="SetDescPoint" CausesValidation="False"/>
<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" id="fileSelect" runat="server" class="hidden" />
<asp:Button ID="btnUpload" runat="server" Text="Load" OnClick="LoadFile" class="hidden" CausesValidation="False" />
<input type="button" id="triggerUpload" name="name" value="Select File" />
</div>
这里是视图:
这里是 JQuery 代码:
$('#triggerUpload').click(function () {
$('#<%=fileSelect.ClientID%>').trigger('click');
});
$('#<%=fileSelect.ClientID%>').change(function () {
$('#<%=btnUpload.ClientID%>').trigger('click');
});
当点击Select File 按钮时,对话窗口打开并且用户选择文件。
选择文件后,此 JQuery 代码触发:
$('#<%=fileSelect.ClientID%>').change(function () {
$('#<%=btnUpload.ClientID%>').trigger('click');
});
上面的 JQuery 行触发了这个 asp 按钮控件:
<asp:Button ID="btnUpload" runat="server" Text="Load" OnClick="LoadFile" class="hidden" CausesValidation="False" />
这是触发此代码背后的方法:
protected void LoadFile(object sender, EventArgs e)
{
HttpPostedFile file = Request.Files[fileSelect.Name];
int fileSize = file.ContentLength;
byte[] fileByteArray = new byte[fileSize];
file.InputStream.Read(fileByteArray, 0, fileSize);
}
在点击 postBack Process 按钮并触发后面的代码后:
protected void SetDescPoint(object sender, EventArgs e)
{
if(fileSelect.Value != string.Empty)
{
//make some process...
}
}
但是fileSelect 控件是空的。
据我了解 input file 在回发调用之间不保留文件。
我需要在后面的 SetDescPoint 代码中访问该文件。
知道如何在回发调用之间保存文件吗?
【问题讨论】: