c# - 如何在asp.net web表单中使用方法="post"的表单

标签 c# asp.net ajax ajaxcontroltoolkit asyncfileupload

我正在使用ajax工具包asyncFileUpload控件

我遇到了服务器端事件未触发的问题,并发现了此帖子 Hidden/Shown AsyncFileUpload Control Doesn't Fire Server-Side UploadedComplete Event

我将 uploader 插入到表单中并使用此属性 enctype="multipart/form-data"method="post"

此 uploader 位于我的网站表单内,该表单位于母版页内

添加此属性后,我收到此错误

    A page can have only one server-side Form tag.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: A page can have only one server-side Form tag.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 

这是我的网络表单

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <form id="Form1" enctype="multipart/form-data" method="post" action="target_url"
    runat="server">
    <div id="Div1" runat="server">
        Just some time to make sure that the page doesn't get reloaded after uploading:
        <%=DateTime.Now %><br />
        <ajaxToolkit:AsyncFileUpload ID="FileUpload" runat="server" OnUploadedComplete="FileUpload_UploadCompleted"
            OnClientUploadComplete="FileUpload_ClientUploadCompleted" OnClientUploadError="uploadError"
            OnLoad="FileUpload_OnLoad" />
        <asp:Image runat="server" ID="imgUpload" src="" />
        <asp:Label runat="server" ID="lblerror" Text="" />
    </div>
    </form>
</asp:Content>

最佳答案

您的 MasterPage 已经有一个 form 元素。不允许嵌套表单...

我对ajaxToolkit:AsyncFileUpload了解不多,但是,由于它是一个服务器控件,因此它应该更改父form的属性。您是否尝试过像下面的代码一样删除表单?

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <div id="Div1" runat="server">
        Just some time to make sure that the page doesn't get reloaded after uploading:
        <%=DateTime.Now %><br />
        <ajaxToolkit:AsyncFileUpload ID="FileUpload" runat="server" OnUploadedComplete="FileUpload_UploadCompleted"
            OnClientUploadComplete="FileUpload_ClientUploadCompleted" OnClientUploadError="uploadError"
            OnLoad="FileUpload_OnLoad" />
        <asp:Image runat="server" ID="imgUpload" src="" />
        <asp:Label runat="server" ID="lblerror" Text="" />
    </div>
</asp:Content>

另一种可能的解决方案:

“弹出”一个“模态”表单,其中仅包含带有文件上传控件的表单。这将解决嵌套表单问题。但是,它确实改变了功能。

关于c# - 如何在asp.net web表单中使用方法="post"的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9330738/

相关文章:

c# - Include 中使用的 Lambda 表达式无效。 EF6,导航属性

c# - 集合内的 Xml 序列化

javascript - MaterializeCSS - ASP.Net MVC : Checkbox in modal

javascript - 从 ASP.NET 项目中在新选项卡中打开外部链接

javascript - JQUERY 和 PHP POST - 在 console.log 中显示 00

c# - WP8网络状态-无网络时应用程序崩溃

c# - 身份角色未添加到用户

asp.net - 将 HTML Tidy 与 ASP.NET 标签一起使用

jquery - 通过 jQuery 提交后显示 Django 表单的验证错误 `.ajax`

jquery - 提交后关闭 Bootstrap 模式