0

フォームを含む ASPX ページがあります。そのフォームには名前と ID が与えられています。aspx ページには、リンク先のマスター ページもあります。

ページが提供されると、フォームの名前と id の両方が異なります。たとえば、名前が「uploadForm」から「Form1」に変わります。

フォームのアクションも変更されているように見えます。

これは何が原因で、どうすれば防ぐことができますか?

したがって、aspx ページの最初の行は次のようになります。

<%@ Page Language="C#" MasterPageFile="~/Modal.Master" AutoEventWireup="true" CodeBehind="UploadPage.aspx.cs" Inherits="WebConnect.UploadPage" %>

フォームタグは次のとおりです。

<form id="uploadForm" name="uploadForm" enctype="multipart/form-data" action="Upload.ashx" method="post">

提供されると、次のように表示されます。

<form id="Form1" action="UploadPage.aspx" method="post">


更新:ページの本文全体は次のとおりです。

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <form id="uploadForm" name="uploadForm" enctype="multipart/form-data" action="Upload.ashx" method="post">
        <div>
            File:
            <input id="file1" name="fileField" type="file" />
            <input id="objectID" name="objectID" type="hidden" />
            <input id="fieldID" name="fieldID" type="hidden" />
            <input id="submitType" name="submitType" type="hidden" />
            <progress id="uploadProgress" value="10" max="100" display="none"></progress>
            <button id="Html5Submit" type="button" onclick="AsyncSubmit()">Submit</button>
            <button id="Html4Submit" type="button" onclick= "SyncSubmit()">Submit</button>
        </div>
    </form>
    <div id="Html5Upload">
    </div>
</asp:Content>
4

3 に答える 3

1

レンダリングされたコントロールの名前変更は、ASP.Netで長い間よく知られた問題であり、WebFormsでそれを防ぐためにできることはたくさんありません。ClientIdただし、 Asp.Net要素のプロパティを使用して、JavaScriptが要素を検索する方法を変更できます。

var formId = '<%= uploadForm.ClientID %>';

出典:jQueryを使用するためにASP.NETがIDを変更しないようにする方法

JavaScriptでは、代わりにその変数を使用するだけで、準備は'uploadForm'完了です。

于 2012-04-04T22:49:26.813 に答える
1

ネストされたフォームがあると思いますが、これは許可されていません。最初に表示されるフォームはMasterPageのフォームで、2 番目のフォームは uploadForm で、ブラウザーによって削除されます (uploadForm の終了タグは Form1 の終了タグになります)。

したがって、 uploadFormをForm1フォームの外に移動する必要があります。

于 2012-04-04T22:52:00.737 に答える
0

最初の質問は本当にあなたの意図は何ですか?私はコメント/回答に従おうとしていますが、それが明らかだとは思いません(しかし、見逃した可能性があります)。

同じページへのポストバック以外の場所に送信する場合 (デフォルトの Web フォームの動作):

  • 処理がサーバー側である場合、必要な数のボタン コントロール ( runat="server") をそれぞれ独自のpostbackurlで持つことができます
  • @RobRodi の回答は、サーバー側のコントロールでクライアント側 (Javascript) の処理を​​行いたい場合に使用できます。
  • 標準の html ボタン ( ではなく html ボタンrunat="server") を使用し、クライアント スクリプトを介してそのクリック イベントを完全に処理できます (フォーム アクションとは関係ありません)。
于 2012-04-05T05:57:18.630 に答える