2

ajaxツールキットasyncFileUploadコントロールを使用しています

サーバー側のイベントが発生しないという問題があり、この投稿が非表示/表示されたAsyncFileUploadコントロールがサーバー側のUploadedCompleteイベントを起動しないことがわかりました

フォーム内にこの属性を使用してアップローダーを挿入しましたenctype="multipart/form-data" method="post"

このアップローダーは、マスターページ内にある私のWebフォーム内にあります

この属性を追加した後、このエラーが発生しました

    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: 

そして、これが私のWebフォームです

<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>
4

2 に答える 2

1

あなたMasterPageはすでにform要素を持っています。ネストは許可され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>

別の可能な解決策:

「ポップ」formは、フォームに。を含む「モーダル」ですfile upload control。これにより、ネストされたフォームの問題が解決されます。しかし、それは機能を変更しました。

于 2012-02-17T15:17:32.557 に答える
1

非常に汚いハックとして、フォームの前に a を追加して<form></form>、ネストされたフォームから runat="server" を取り出してみてください。

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    **<form></form>**
    <form id="Form1" enctype="multipart/form-data" method="post" action="target_url"
    >
    <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>

過去に、これは私にとってはうまくいきました-WebFormsでの作業を余儀なくされたとき。理由はわかりませんが、WebForms では非常に多くのことがわかりました。

ただし、このようなコードを書きたい場合は、MVC に切り替える必要があります。これが機能したとしても、それは私が解決策と呼ぶものではありません。WebForms は、これを行うようには設計されていません。

于 2012-02-17T15:27:33.150 に答える