Arasındaki tek fark var mı RegisterStartupScriptve RegisterClientScriptBlockRegisterStartupScript kapanış önce javascript koyar yani </form>doğru başladıktan sonra sayfa ve RegisterClientScriptBlock koyar etiketi <form>sayfadaki etiketinin?
Ayrıca, birini diğerinden ne zaman seçersiniz? Bir sorun yaşadığım hızlı bir örnek sayfa yazdım ve bunun nedeninin tam nedeninden emin değilim.
İşte aspx işaretlemesi:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblDisplayDate" runat="server"
Text="Label" /><br />
<asp:Button ID="btnPostback" runat="server"
Text="Register Startup Script"
onclick="btnPostback_Click" /><br />
<asp:Button ID="btnPostBack2" runat="server"
Text="Register"
onclick="btnPostBack2_Click" />
</div>
</form>
</body>
</html>
İşte Arkasındaki Kod:
protected void Page_Load(object sender, EventArgs e)
{
lblDisplayDate.Text = DateTime.Now.ToString("T");
}
protected void btnPostback_Click(object sender, EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script language='javascript'>");
sb.Append(@"var lbl = document.getElementById('lblDisplayDate');");
sb.Append(@"lbl.style.color='red';");
sb.Append(@"</script>");
if(!ClientScript.IsStartupScriptRegistered("JSScript"))
{
ClientScript.RegisterStartupScript(this.GetType(),"JSScript",
sb.ToString());
}
}
protected void btnPostBack2_Click(object sender, EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script language='javascript'>");
sb.Append(@"var lbl = document.getElementById('lblDisplayDate');");
sb.Append(@"lbl.style.color='red';");
sb.Append(@"</script>");
if (!ClientScript.IsClientScriptBlockRegistered("JSScriptBlock"))
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "JSScriptBlock",
sb.ToString());
}
}
Sorun, btnPostBackdüğmeyi tıklattığımda, bir geri gönderme yapıyor ve etiketi kırmızıya btnPostBack2çeviriyor, ancak tıkladığımda bir geri gönderme yapıyor, ancak etiket rengi kırmızıya değişmiyor. Bu neden? Etiket başlatılmadığı için mi?
Ben de bir kullanıyorsanız okumuştum UpdatePanel, kullanılan gerekir ScriptManager.RegisterStartupScript, ama varsa MasterPage, ben kullanırım ScriptManagerProxy?