呈现脚本块
目前为止的 js 都是直接插入页面 .aspx 部分的静态 <script> 块。然而,使用公开 ClientScriptManager 对象的 Page.ClientScript 属性呈现脚本通常更加灵活。
ClientScriptManager 提供了几个管理脚本块的有用方法,其中两个最有用的方法如下:
- RegisterClientScriptBlock() :把脚本块写到 Web 表单的开始,在 <form runat=”server”> 标签后。适合响应 js 事件而被调用的函数使用。这样的 <script> 块可以放在任意地方,放在 Web 表单开头只是出于习惯并使它们容易被找到。
- RegisterStartupScript() :把脚本块写到 Web 表单的结尾,在结束标签 </form> 之前。用于添加那些页面加载时立刻执行的 js 代码。这些代码可能操纵页面上的其他控件,所有放在 Web 表单的结尾比较安全。
使用这 2 个方法,需要指定脚本块的键名。唯一的键名,好处是能保证 ASP.NET 不会把相同的脚本函数添加多次。例如 ASP.NET 验证控件,每个控件都要使用一些验证函数,但是让每个控件都添加重复的 <script> 块并没有意义。但当调用 RegisterClientScriptBlock() 时,每个控件都使用相同的键名,ASP.NET 知道它们是重复的定义,所以只呈现一份单一副本。
下面的代码注册一个 confirmSubmit() 的 js 函数,通过 onsubmit 特性附加到表单上:
{
string script = @"<script type='text/javascript'>
function confirmSubmit(){
var msg = 'Are you sure you want to submit this data?';
return confirm(msg);
}
</script>";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Confirm", script);
form1.Attributes.Add("onsubmit", "return confirmSubmit();");
}