2012-04-04 4 views
0

양식이 포함 된 ASPX 페이지가 있습니다. 이 양식에는 이름과 ID가 부여되었습니다. aspx 페이지에는 링크 된 마스터 페이지도 있습니다.ASPX 양식의 이름 바꾸기 방지

페이지가 제공되면 양식의 이름과 ID가 모두 다릅니다. 예를 들어 이름이 "uploadForm"에서 "Form1"로 변경됩니다.

양식의 동작이 변경된 것처럼 보입니다.

이 원인은 무엇이며 어떻게 예방할 수 있습니까?

<%@ 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"> 


업데이트 : 여기에 entir이 있습니다. 페이지의 전자 본체 :

<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

캐시 된 페이지가 보이지 않습니까? – Vache

+0

방금 ​​테스트 해본 결과 제대로 작동했습니다. ASPX는 MasterPage를 기반으로합니다. 양식 runat = "server"를 가진 MasterPage와 양식 태그가있는 ASPX. 양식의 이름이 변경되지 않았으므로 Vache가 언급했듯이 여기에 캐싱이 잘못되었을 수 있습니다. 프레임 워크 3.5, VS 2010 – dash

+0

@dash 업로드 양식이 form1 외부에있는 경우에만 작동합니다. –

답변

1

렌더링 제어 이름 변경은 오랜 시간 동안 ASP.Net에서 잘 알려진 문제가있다, 당신은 웹폼에서 그것을 방지하기 위해 할 수있는 훨씬이 아니다. 그러나 Asp.Net 요소의 ClientId 속성을 사용하여 JavaScript에서 요소를 검색하는 방법을 수정할 수 있습니다.

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

출처 : 자바 스크립트에서 How to stop ASP.NET from changing IDs in order to use jQuery

, 그냥 대신 'uploadForm'의 변수를 사용하고 갈 수 있어요.

+0

문제는 양식 요소의 이름을 바꾸는 것이 아니라 Action 매개 변수를 변경하는 것입니다. –

1

중첩 된 양식이 있다고 생각합니다. 허용되지 않습니다. 첫 번째 폼은 마스터 페이지이고 두 번째 폼인 uploadForm은 브라우저에 의해 삭제됩니다 (uploadForm의 닫는 태그는 Form1의 닫는 태그가됩니다).

업로드 양식Form1 외부로 이동해야합니다.

+0

중첩 된 양식이 없습니다. 전체 소스에 대한 내 업데이트를 참조하십시오. –

+0

마스터 페이지의 내용도 표시 할 수 있습니까? –

0

첫 번째 질문은 실제로 귀하의 의도라고 생각하십니까? 나는 코멘트/답변을 따르려고 노력하고있어. 나는 그것이 분명하다고 생각하지 않는다. (그러나 나는 그것을 놓쳤을지도 모른다).

같은 페이지 (기본 웹 양식 동작)에 게시보다 다른 곳에서 다른 제출하려면 : 당신으로 처리가 서버 측 인 경우

  • , 당신은 (runat="server"를) 많은 버튼 컨트롤을 할 수 있습니다 필요 각각 자신의 postbackurl
  • 당신이 클라이언트 측 (자바 스크립트) 서버 측에 처리가
  • 당신은 표준 HTML 버튼을 사용하여 제어 수행하려는 경우 @RobRodi의 대답은 사용할 수
  • (HTML 버튼을하지 runat="server") 및 클라이언트 스크립트를 통해 click 이벤트 전체를 처리합니다 (n 양식 행동과 관련이있는 것).