【问题标题】:Relay click to Button to trigger ASP.NET File Upload中继点击按钮触发 ASP.NET 文件上传
【发布时间】:2012-03-05 03:36:47
【问题描述】:

在 ASP.NET C# 网站中,我有一个将文件上传到服务器的输入。为了克服无法为 type=file 的输入设置样式的问题,我创建了一个样式化的 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>

【问题讨论】:

    标签: c# jquery css


    【解决方案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()
    } 
    

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多