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

时间:2012-03-05 03:36:47

标签: c# jquery css

在ASP.NET C#网站中,我有一个输入文件,将文件上传到我的服务器。为了克服无法样式输入类型=文件的问题,我创建了一个看起来像输入的样式div但实际上只是将消息中继到实际输入,该输出有display: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>

1 个答案:

答案 0 :(得分:1)

不确定你的目标是什么,但这应该有效

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

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

以我的拙见,这将是一个更简洁的解决方案:

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

单独使用JQuery进行连接,这样你的代码就不会被你的html所破坏。

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