我希望有一个控件允许用户单击链接按钮,出现文件对话框并且用户选择文件。目前我正在使用FileUpload控件:
<asp:LinkButton ID="btnDocumentLocation" runat="server" CausesValidation="False">Please Select...</asp:LinkButton>
<asp:FileUpload ID="fuDocumentLocation" style="display:none;" runat="server" ClientIDMode="AutoID" />
在我Page_Load
中的代码中:
btnDocumentLocation.OnClientClick = "$('[id*=\"" + fuDocumentLocation.ClientID + "\"]').click();";
这将启动(隐藏)FileUpload
控件,您可以在其中选择文件。在Page_Load
中,它会检查文件,并更新Text
的{{1}}。我不需要实际的文件内容,只需要文件位置:
LinkButton
这在本地运行时工作正常。发布后,if (IsPostBack && fuDocumentLocation.PostedFile != null && fuDocumentLocation.PostedFile.FileName.Length > 0)
{
btnDocumentLocation.Text = fuDocumentLocation.PostedFile.FileName;
}
else
{
btnDocumentLocation.Text = "";
}
似乎在“上传”部分出现问题。它不会回发到服务器,因此无法运行FileUpload
代码来填充Page_Load
属性。我不需要它来抓取文件,我只需要文件位置。
我需要按顺序发生什么:
btnDocumentLocation.Text
LinkButton
LinkButton
属性设置为选定的完整文件名是否存在允许此操作的控件而没有在请求中获取文件数据的开销?并允许您选择不同共享的文件吗?
答案 0 :(得分:1)
如果您只想更改文字,为什么要回发页面?相反,您可以使用Jquery / Javascript在不使用回发的情况下实现相同的操作,如下所述:
<asp:LinkButton runat="server" ID="btnDocumentLocation" OnClientClick="return GetFile();" >Browse...</asp:LinkButton>
<asp:FileUpload runat="server" ID="fuDocumentLocation" OnChange="ChangeText(this.value);" style="display: none" />
<script type="text/javascript">
function ChangeText(selectedPath) {
$('#' + '<%=btnDocumentLocation.ClientID%>').text(selectedPath);
}
function GetFile() {
$('#' + '<%=fuDocumentLocation.ClientID%>').click();
return false;
}
</script>
如果您想使用Pure JQuery:
<asp:LinkButton runat="server" ID="btnDocumentLocation" >Browse...</asp:LinkButton>
<asp:FileUpload runat="server" ID="fuDocumentLocation" style="display: none" />
<script type="text/javascript">
$(document).ready(function() {
$('#' + '<%=btnDocumentLocation.ClientID%>').click(function () {
$('#' + '<%=fuDocumentLocation.ClientID%>').click();
return false;
});
$('#' + '<%=fuDocumentLocation.ClientID%>').change(function () {
var selectedPath = $('#' + '<%=fuDocumentLocation.ClientID%>').val();
$('#' + '<%=btnDocumentLocation.ClientID%>').text(selectedPath);
});
});
</script>
答案 1 :(得分:0)
<asp:LinkButton runat="server" ID="btnDocumentLocation" >Browse...</asp:LinkButton>
<asp:FileUpload runat="server" ID="fuDocumentLocation" style="display: none" />
<script type="text/javascript">
$(document).ready(function() {
$('#' + '<%=btnDocumentLocation.ClientID%>').click(function () {
$('#' + '<%=fuDocumentLocation.ClientID%>').click();
return false;
});
$('#' + '<%=fuDocumentLocation.ClientID%>').change(function () {
var selectedPath = $('#' + '<%=fuDocumentLocation.ClientID%>').val();
$('#' + '<%=btnDocumentLocation.ClientID%>').text(selectedPath);
});
});