日期:2014-05-20  浏览次数:20427 次

内容页与母版页问题
母版页:MasterPage.master    
内容页:default.aspx    
 
default.aspx    
<%@     Page     Language= "C# "     MasterPageFile= "~/MasterPage.master "     AutoEventWireup= "true "     CodeFile= "Default.aspx.cs "     Inherits= "article_Default "     Title= "Untitled     Page "     %>    
<asp:Content     ID= "Content1 "     ContentPlaceHolderID= "mainContent "     Runat= "Server ">    
<asp:TextBox     ID= "ChannelName "     CssClass= "insideInputL "     Height= "15px "     Width= "200 "     runat= "server "> </asp:TextBox>    
<asp:Label     ID= "msgChannelName "         runat= "server "> <img     src= "images/mustInput.gif "     alt= "必填项 "     /> </asp:Label>    
<asp:Button     CssClass= "submitButton "     Text= "提     交 "     ID= "submitButton1 "     OnClick= "submitButton1_Click "     runat= "server "     />    
</asp:Content>    
 
1.为什么查看源代码textBox和Button控件ID的名字都变了?可以不让他们变么?    
 
2.textBox,Button的ID变成了ctl00$mainContent$ChannelName,ctl00_mainContent_submitButton1,    
Label     的ID变成了ctl00_mainContent_msgChannelName为什么他们分别是以$和_分隔的(UniqueID,ClientID),这个有什么规律怎么判断使用哪个函数?ctl00是固定值么?    
3.在MasterPage.master页定义了 <form     name= "myform "     action= " "     method= "post "     id= "myform "     runat= "server "> ,为什么运行后页面里变成了 <form     name= "aspnetForm "     method= "post "     action= "xxxx.aspx "     id= "aspnetForm ">    
4.为什么在request[ "ChannelName "]的时候需要改成ChannelName.UniqueID而ChannelName.text就可以直接附值而不是ChannelName.UniqueID.text

郁闷了一晚上,不得正解,请各位兄弟帮帮忙啊~!

------解决方案--------------------
所有的问题都是一个问题. aspx页面的控件是母板页的ContentPlaceHolder 控件下的子控件,所以控件ID会变.
------解决方案--------------------
这个是.net 机制问题
.net为了 自身的aspx服务器控件 与 以前的html控件 id重复
所以
一般都会改变 最终输出到 客户端的html代码中的id值
当然这些值一般也是按照一定的规律来修改的