2012-04-04 15 views
0

Ich habe eine ASPX-Seite, die ein Formular enthält. Diese Form hat einen Namen und eine ID erhalten. Die ASPX-Seite hat auch eine Masterseite, mit der sie verknüpft ist.Verhindern, dass ASPX-Formular umbenannt wird

Wenn die Seite aufgerufen wird, unterscheiden sich Name und ID des Formulars. Der Name ändert sich beispielsweise von "uploadForm" in "Form1"

Die Aktion des Formulars scheint ebenfalls geändert zu werden.

Was ist die Ursache dafür, und wie kann ich das verhindern?

Die erste Zeile der aspx Seite ist also:

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

Und die Form-Tag ist:

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

Wenn diente, scheint es, als:

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


UPDATE: Hier ist die Entir e Körper der Seite:

<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> 
+0

Sind Sie sicher, was Sie sehen, ist keine zwischengespeicherte Seite? – Vache

+0

Ich habe das gerade getestet und es hat gut für mich funktioniert. ASPX basiert auf MasterPage. MasterPage mit Formular runat = "server" und ASPX mit Ihrem Formular-Tag. Formular wurde nicht umbenannt, daher kann, wie Vache erwähnt, Caching hier fehlerhaft sein. Framework 3.5, VS 2010 – dash

+0

@dash es hängt davon ab, es funktioniert nur, wenn das Upload-Formular außerhalb der Form1 ist –

Antwort

1

Rendered Steuer Umbenennung hat seit langem ein bekanntes Problem in ASP.Net gewesen, und es gibt nicht viel Sie es in WebForms verhindern tun können. Sie können jedoch mithilfe der Eigenschaft ClientId für Asp.Net-Elemente ändern, wie Ihr JavaScript nach dem Element sucht.

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

Quelle: How to stop ASP.NET from changing IDs in order to use jQuery

In Ihrem JavaScript, um nur diese Variable anstelle von 'uploadForm' und du bist gut zu gehen.

+0

Das Problem ist, es ist nicht nur das Formularelement umbenennen, es ändert seinen Aktionsparameter. –

1

Ich denke, Sie haben verschachtelte Formulare, was nicht erlaubt ist. Das erste Formular, das Sie sehen, ist das in MasterPage und das zweite, uploadForm, wird von Browsern gelöscht (das schließende Tag von uploadForm wird zum schließenden Tag von Form1).

So müssen Sie uploadForm außerhalb der Form1 Formular verschieben.

+0

Keine verschachtelten Formulare, siehe mein Update für die vollständige Quelle. –

+0

können Sie auch den Inhalt der Masterseite anzeigen? –

0

Ich denke, die erste Frage ist wirklich, was ist deine Absicht? Ich versuche den Kommentaren/Antworten zu folgen und ich denke nicht, dass es offensichtlich ist (aber ich habe es vielleicht verpasst).

Wenn Sie woanders andere auf die gleiche Seite (die Standard-Web-Formulare Verhalten) als Postbacks einreichen:

  • Wenn die Verarbeitung Server-Seite ist, können Sie so viele Tasten-Steuerung haben (runat="server"), wie Sie müssen jeweils mit einem eigenen postbackurl
  • @RobRodi ‚s Antwort kann verwendet werden, wenn Sie Client-Seite tun wollen (Javascript) Verarbeitung mit Server-Seite steuert
  • Sie können eine Standard-hTML-Taste verwenden (hTML-Taste, nicht runat="server") und Handle sein Click Event vollständig über Client Script (hat n nichts mit Form Aktion zu tun).
Verwandte Themen