在asp.net 3.5中使用RegisterClientScriptBlock / RegisterStartupScript

我无法理解它的用途.RegisterClientScriptBlock / RegisterStartupScript

当我们可以直接写入javascrpt代码in.js文件然后在按钮上调用它

例如:2

 function ReqField1Validator() { if (document.forms[0].txtField1.value == '') { alert('TextBox cannot be empty') return false } return true }  btnPostback.Attributes.Add("onclick","return ReqField1Validator()"); 

RegisterClientScriptBlock / RegisterStartupScript的用途是什么?

 protected void btnPostback_Click(object sender, EventArgs e) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append(@""); sb.Append(@"var lbl = document.getElementById('lblDisplayDate');"); sb.Append(@"lbl.style.color='red';"); sb.Append(@""); if (!ClientScript.IsStartupScriptRegistered("JSScript")){ ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString()); } } 

阅读一些文章,但他们不清楚

对此的任何想法都会很棒

谢谢王子

RegisterStartupScript用于在页面加载完成后注册和执行javascript函数,此javascript代码在引发页面的onLoad事件之前执行。 您可以出于多种原因使用它,例如,您希望根据代码中的某些变量值执行任何特定的javascript函数。

另一方面, RegisterClientScriptBlock用于在页面顶部添加脚本块,类似地,它为您提供了一种在后面的代码中使用客户端代码和服务器代码的方法。

随着时间的推移,您可能会遇到需要在JavaScript中调用函数的情况,具体取决于代码背后的某些变体。

一个非常常见的例子是处理exception消息,然后使用JavaScript以奇特的方式显示它们。

您可能希望捕获这样的exception:

 public void TrySomethingAwesome(){ try { //try to do something awesome } catch (Exception ex) { ScriptManager.RegisterStartupScript(Page, typeof(Page), "showError", string.Format("ShowError({0});", "Oops! Something went wrong :("), true); } } 

这样你的JavaScript就可以接管并以一种奇特的方式显示消息:D