中继单击按钮以触发ASP.NET文件上载

本文关键字:ASP NET 文件 上载 单击 按钮 | 更新日期: 2023-09-27 18:26:34

在ASP.NET C#网站中,我有一个将文件上传到服务器的输入。为了克服无法对type=file的输入进行样式化的问题,我创建了一个样式化的div,它看起来像输入,但实际上只是将消息中继到实际的输入,实际的输入显示:none是不可见的。

我的问题:中继消息不起作用,即,当我将点击消息中继到实际输入时,文件永远不会上传(什么都不会发生)。我知道这个按钮有效,因为如果我点击实际输入,它会成功上传文件。

是否有一些ASP.NET安全性阻止我执行此操作?出了什么问题?我如何才能实现我想要做的事情:
有一个样式输入,其中type=file(不是无聊的浏览按钮)&将点击传递到实际输入

我的实际输入有效:

<input id="fileUpload" type="file" Runat="server" NAME="fileUpload"/>
<asp:button id="btnSave" OnClick="bt1Clicked" 
                runat="server" Text="Upload File"></asp:button>
<asp:label id="lblMessage" runat="server"></asp:label> 

我的风格按钮:

<a onclick="$(''btnSave'').click(); return false;" href="#">test</a>

中继单击按钮以触发ASP.NET文件上载

不确定你的目标是什么,但这应该适用于

<a onclick="$('<%= btnSave.ClientID %>').click(); return false;"
                                                     href="#">test</a>

为什么?因为在默认情况下,asp.net为控件提供自己的id,该id由ClientIdMode定义。另请参阅System.Web.UI.Control.ClientID

在我看来,这将是一个更整洁的解决方案:

<a id="btnRelay" href="#">test</a>

将其与JQuery单独连接,这样您的代码就不会被html破坏。

$('btnRelay').click(function(event){
    event.preventDefault();
    $('<%= btnSave.ClientID %>').click()
}