详解Asp.Net母版页元素ID不一致的体现

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" Theme="style" AutoEventWireup="true" CodeFile="r_Balance.aspx.cs" Inherits="Report_r_Balance" %> <asp:Content ContentPlaceHolderID="MainContent" runat="server"> <form runat="server"> <div> <table cellspacing="0" cellpadding="0"> <tbody> <tr> <td> <asp:Label runat="server" SkinID=" " Text="余额统计"></asp:Label> </td> </tr> <tr> <td> <asp:ImageButton runat="server" SkinID="b_print" ="btnPrint_Click" /> <asp:ImageButton runat="server" SkinID="b_export" ="btnExport_Click" /> </td> </tr> </tbody> </table> <!--结束功能条--> <table> <tr> <td> 卡号*</td> <td colspan="1"> <asp:TextBox runat="server"></asp:TextBox></td> <td colspan="1" > <asp:ImageButton runat="server" AlternateText="查询" ImageAlign="Middle" ImageUrl="~/images/go.gif" ="nSearch_Click" /> </td> </tr> </table> ....

生成的HTML代码:

<form method="post" action="r_Balance.aspx"> <table cellspacing="0" cellpadding="0"> <tbody> <tr> <td> <span>余额统计</span> </td> </tr> <tr> <td> <input type="image" src="https://www.jb51.net/App_Themes/style/images/b_print.jpg" ="return np();" /> <input type="image" src="https://www.jb51.net/App_Themes/style/images/b_export.jpg" /> </td> </tr> </tbody> </table> <!--结束功能条--> <table> <tr> <td> 卡号*</td> <td colspan="1"> <input type="text" /></td> <td colspan="1" > <input type="image" src="https://www.jb51.net/images/go.gif" alt="查询" ="return nselect();" /> </td> </tr> </table>

注意:

1.源文件控件和元素ID和生成HTML文件的ID不一致。在生成的HTML中原ASP控件ID加了ctl00_MainContent_前缀,其他元素加了ctl00$MainContent$前缀。原变form1为aspnetForm这是因为aspx页面的控件是母板页的ContentPlaceHolder
控件下的子控件,所以控件ID会变

2.<system.Web><xhtmlConformance mode="Transitional|Legacy|Strict" />在其中选择 Transitional、Strict则产生自动前缀。ctl00.选择 Legacy|则产生自动前缀_ctl0.

3.后台Request.Form["txtc_name"]键值需要改变,必须变为Request.Form["ctl00$MainContent$txtc_name"]才能收到页面输入值

4.至于为什么,只能说这是.NET机制问题。。。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdsjpw.html