Bazen Asp.Net sayfalarımızın client tarafında durum gereği farklı davranmasını isteyebiliriz. Tabiki javascript kodlarını devreye sokarak.
.NET Framework 2.0 versiyonu ile bunu yapmanın yolu ClientScriptManager Class ının RegisterStartupScript metodunu kullanmak olacaktır.
Bilindiği gibi RegisterStartupScript metodu 1.1 versiyonuda da bulunmaktaydı. Birçok metod gibi 2.0 ile bunun da kullanımı biraz değişmiş :)
Uygulamamızda;
client tarafında
window.open( [sURL] [, sName] [, sFeatures] [, bReplace]) metodunu
kod tarafında ise
public void RegisterClientScriptBlock ( Type type, string key, string script ) metodunu kullanacağız.
Şimdi ise Logon Button' nun Click Olayına ilgili kodu yazalım,
if (logon())
{
ClientScriptManager csm = Page.ClientScript;
StringBuilder sb = new StringBuilder();
sb.Append("<script language=\"javascript\">");
sb.Append("window.onload = function()");
sb.Append("{");
sb.Append("window.open(\"loading.aspx\",\"load\",\"");
sb.Append("height=\" + (window.screen.availHeight - 30) + \",");
sb.Append("width=\" + (window.screen.availwidth - 10) + \",");
sb.Append("top=0, left=0, menubar=0, location=0, resizable=1, status=0\");");
sb.Append("if (window.name != \"load\")");
sb.Append("{");
sb.Append("this.focus();");
sb.Append("top.window.opener = top;");
sb.Append("top.window.open('','_parent','');");
sb.Append("top.window.close();");
sb.Append("}");
sb.Append("}");
sb.Append("</script>");
csm.RegisterClientScriptBlock(this.GetType(), string.Empty, sb.ToString());
}
else
{
//Giriş Başarısız
}