19.Generating Client IDs:
web控件的客户端ID是根据父控件ID动态的产生。 所以,如果你在一个用户控件中使用textbox,我们必须查看为它生产什么样ID,才能在客户端的脚本中直接使用。
有时这些是动态的改变用户控件的名称也更改它的子控件ID。在asp.net 4.0中,这个问题是可以由页面的ClientIDMode属性解决。它有如下可能的值:AutoID , Static, Predictable 和Inherit。
AutoID: 是webpage 的默认值,功能和以前 ASP.NET的版本一样。
Static: 为控件设置一个静态的ID,所以我们不需要当心父控件的ID,我们也能使用javascript引用它。
例如一个用户控件里面的 textbox ,它外面胡一个ClientIDMode 设置为static
<uc1:WebUserControl ID="WebUserControl1" runat="server" />
这个用户控件包含了textbox2
<input name="ctl00$MainContent$WebUserControl1$TextBox2" type="text" id="TextBox2" />
如果我们移除ClientIDMode="static" ,输出胡HTML将会是:
它将产生象以前asp.net版本的textbox的ID
Predictable: 如果gridview 或者listview控件中我们设置ClientIDMode的值为Predictable ,它将会串连控件ID和Gridview的ID ,column的值在ClientIDRowSuffiex 属性上提到:
ClientIDMode="Predictable"
ClientIDRowSuffix="ItemID"
如果在gridview的模板列中的有一个ID为 Label1的label控件 ,它被绑定在ItemID 列上。
它的ID将会是: ID= GridView1_Label1_200。
如果我们用数据绑定控件之外使用web控件,设置ClientIDMode等于Predictable:
<asp:Panel ID="panel1" runat="server">
<asp:TextBox ID="TextBox2" runat="server" ClientIDMode="Predictable"></asp:TextBox>
</asp:Panel>
你可以看到webcontrols在一个面板输出和另外一个再面板以外输出。
<div id="MainContent_panel1">
<input name="ctl00$MainContent$TextBox1" type="text" id="MainContent_TextBox1" />
</div>
它将产生所有web控件的ID,是panel的页面的ID加上子控件的ID。
Inherit: WEB控件默认是继承父容器的ID。 控件能覆盖它父控件的属性。所以我能为ClientModeID设置不同的值。
20.Permanent Redirect :
在有些情况下,如果当前页面已经过时,我们希望将用户重定向到新开发的网页。 我们可以使用Response.Redirect转移页到新的页面。但是,在这种情况下,搜索引擎保存搜索索引的网页的旧信息。 另外,如果用户浏览到这个网页,他将被重定向到这个网页,然后用命令的response.redriect帮助新打开的一页。
但在ASP.NET 4.0中一个新的命令Response.RedirectPermanent可用于更改服务器页上的头信息。因此,如果用户去为他直接重定向到新的一页,并为他节省了双行页面。在该网站和网页更新的发现头和更新其索引信息,展示最新的信息重新搜索索引同样的搜索引擎。