我有一个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>
答案 0 :(得分:1)
渲染控件重命名已经成为ASP.Net中一个众所周知的问题很长一段时间了,并且你无法在WebForms中做很多事情来阻止它。但是,您可以使用Asp.Net元素上的ClientId
属性来修改JavaScript搜索元素的方式。
var formId = '<%= uploadForm.ClientID %>';
来源:How to stop ASP.NET from changing IDs in order to use jQuery
在您的JavaScript中,只需使用该变量而不是'uploadForm'
,就可以了。
答案 1 :(得分:1)
我认为你有嵌套表格,这是不允许的。您看到的第一个表单是 MasterPage 中的表单,第二个表单uploadForm被浏览器删除(uploadForm的结束标记成为Form1的结束标记)。
所以你必须在 Form1 表单之外移动 uploadForm 。
答案 2 :(得分:0)
我认为第一个问题真的是你的意图是什么?我正在尝试遵循评论/答案,我认为不是很明显(但我可能已经错过了)。
如果您想将其他地方提交到同一页面以外的其他地方(默认的网络表单行为):
runat="server"
),每个按钮控件都有自己的postbackurl runat="server"
)并完全通过客户端脚本处理其点击事件(与表单操作无关)。