更新母版页中的面板和子页中的 asp 文件上传

Posted

技术标签:

【中文标题】更新母版页中的面板和子页中的 asp 文件上传【英文标题】:Update panel in master page and asp fileupload in child page 【发布时间】:2012-08-02 04:26:37 【问题描述】:

我遇到了一个问题,目前我的母版页中有一个更新面板,而我的一个子页中有一个 asp 文件上传控件。

我在主页面中的更新面板[年龄:

    <form id="form1" runat="server">
      <asp:ScriptManager ID="ScriptManager1" runat="server">
     </asp:ScriptManager>

     <asp:updateprogress associatedupdatepanelid="UpdatePanel1"
        id="updateProgress" runat="server">
         <progresstemplate>
            <div id="processMessage" style=" background-image:url('../../Styles/ajax-loader3.gif'); width:100px; height:100px; background-repeat:no-repeat; background-position:center;">

               </div>
        </progresstemplate>
    </asp:updateprogress> 

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
     <ContentTemplate>
..
    </ContentTemplate>
 </asp:UpdatePanel>
</form>

需要文件上传的我的子页面:

<div id="Annoucments" class="ContentDIV">
            <h2 class="Tabheader">Annoucments</h2>
            <p class="tabdescription">Here you will be able to upload announcements and pictures to be displayed in the login page, below is the current announcement click on update to save the changes that you have made.</p>

            <table width = "100%">

            <tr>
            <td class="Tablabel">Annoucment title:</td> <td class="tableInput" align="left"><asp:TextBox ID="Announcement_TB" runat="server" CssClass="textboxTabs"></asp:TextBox></td>
            <td class="Tablabel">Picture/Poster:</td> <td class="tableInput" align="left"><asp:FileUpload ID="Announcement_PIC" runat="server"  CssClass="textboxTabsFiles"/></td>
            </tr>

            <tr>
            <td class="Tablabel">Description:</td> <td class="tableInput" align="left"><asp:TextBox ID="Announcement_Desc" CssClass="textboxTabs" runat="server" Rows="3" TextMode="MultiLine"></asp:TextBox></td>
            </tr>

            <tr><td colspan="4" style="height:10px" id ="BLANK">
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                </td></tr>

            <tr>
            <td colspan="2" align="right"><input type="button" id="Announcement_Update" runat="server" value="Update" class="TabButton" onserverclick="ANNOUNCEMENT_UPDATE_Click" style=" font-size:smaller"/></td><td colspan="2">&nbsp;&nbsp;<input type="button" ID="ANNOUNCEMENT_Cancel" runat="server" value="Cancel" class="TabButton" style=" font-size:smaller"/></td>  
            </tr>

            </table>

        </div>

*当我点击按钮 Announcement_Update 后端代码将被触发以获取我的文件名,返回的文件名将始终为“”在调试时找到。*

【问题讨论】:

【参考方案1】:

你不能在UpdatePanel里面找到filename

要么从您的代码中删除 UpdatePanel,要么使用 Asynchronous File Uploader,

您也可以使用Ajax File Uploading techniques,但这有点棘手。

【讨论】:

【参考方案2】:

由于回发问题,Asp UpdatePanel 无法在更新面板中工作。 您可以使用与上传器相关联的按钮添加触发器,例如

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Button ID="Button1" runat="server" Text="Click" />
                </ContentTemplate>
                <Triggers>
                    <asp:PostBackTrigger ControlID="Button1" />
                </Triggers>
            </asp:UpdatePanel>

【讨论】:

如果母版页只用于这个页面,它就可以工作。因为更新面板找不到Button1,会报错。【参考方案3】:

将此代码放在子页面中,以传递PostBackTrigger进行文件上传。

protected void Page_Load(object sender, EventArgs e)

    UpdatePanel updatePanel = Page.Master.FindControl("UpdatePanel1") as UpdatePanel;
    UpdatePanelControlTrigger trigger  = new PostBackTrigger();
    trigger.ControlID = Announcement_Update.UniqueID;
    updatePanel.Triggers.Add(trigger);

享受编码:)

【讨论】:

【参考方案4】:

如果您添加触发器,它对我有用,但还要确保编辑表单标签以包含:

<form runat="server" enctype="multipart/form-data">

【讨论】:

以上是关于更新母版页中的面板和子页中的 asp 文件上传的主要内容,如果未能解决你的问题,请参考以下文章

用户登录时在母版页中隐藏登录面板。(ASP.net)

ASP.NET内容页中访问母版页中的对象

asp.net 中的 Paypal 表单标签问题

Jquery Mobile:管理 ASP.NET 母版页中的数据角色

ASP.NET 中的 Ajax 自动完成文本框在母版页中不起作用

asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件