关于焦点在也可以代码中通过 this.SetFocus()来设置了,看得出来ASP.NET2.0是设计是多么的细致。
Header
在代码中可能通过
this.Header.Metadata.Add("taye", "value");
this.Header.Title = "value";
this.Header.LinkedStyleSheets.Add("style.css");
来控制Title,Meta,Style等[好象LinkedStyleSheets只能是text/css???]
this.Header.StyleSheet.RegisterStyle()
方法将一个style内嵌到网页中去.
这样页面几乎所以部分都可以得到控制了
有些人也许会想那<html>和<body>呢
我们先来运行一下面这个代码.
private void Page_Load(object sender, EventArgs e)
{
foreach (Control ctl in Page.Controls)
{
Response.Write(ctl.ToString() + "<BR/>");
LiteralControl lc = ctl as LiteralControl;
if (lc != null)
{
Response.Write(lc.Text);
}
}
}
你将会看到一个正常页的有如下五个控件
System.Web.UI.LiteralControl
System.Web.UI.HtmlControls.HtmlHead
System.Web.UI.LiteralControl
System.Web.UI.HtmlControls.HtmlForm
System.Web.UI.LiteralControl
而三个LiteralControl的控件的内容分别为
System.Web.UI.LiteralControl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
System.Web.UI.LiteralControl
<body>
System.Web.UI.LiteralControl
</body>
</html>
所以如果你要对body或<!DOCTYPE..>或<html>进行控制那你就找到这相应的控件以后再进行相应的修改吧。只要对
LiteralControl.Text进行修改就可以.
--------------------------------------------------------------------------
从外部的js文件中获取ASPX页面的控件ClientID
前言
当使用MasterPage、UserControl等容器时,为了避免控件的重复命名,asp.net会自动将容器中的控件生成一个ClientID(Control Tree中的可生成,否则不会生成)。
例如:ContentPlaceHolder1中的Button1默认情况下会生“ctl00_ContentPlaceHolder1_Button1”的ClientID。我们在Render出来的mark up中看到的也是这些ClientID。所以,当我们使用JavaScript对控件元素进行操作的时候,必须使用ClientID来对控件进行查找。
Inline情况下的解决方案
如果JavaScript代码写在.aspx文件中时,也就是Inline Script时。在页面生成的时候,我们能够通过绑定机制将控件的ClientID绑定到页面Mark up中,故可使用:
-->document.getElementById("<%=Me.txtTest.ClientID %>" )
来获取一个控件的真实引用,当然,FindControl等方法也可以写在<%=...%>中用来绑定服务端数据到客户端。
external JS情况下的解决方案
然而,部分情况下,为了解耦,我们常常把JavaScript单独写在.js文件中,再引用到aspx文件中去。这种情况下,.js文件内的代码不能通过<%=...%>来进行服务端数据的绑定,所以上面的方法是不能用的。
此时简单点的解决方案就是直接在JavaScript中写控件的ClientID,但这样增加了JS文件和ASPX的耦合度,非常不推荐使用。
我常用的方法有两种,在此抛砖引玉:
案例:
Default5.aspx是MasterPage.master 的内容页,本例中的主要文件。
JScript.js是一个外部的js文件,用来处理JavaScript操作。
Button1是Default5.aspx中的一个<ASP:Button>,用来显示效果。
Button2是Default5.aspx中的一个<input type=button>,用来触发JavaScript。
需求:点击Button2,将Button1上的文本改成“from extended js”