RegisterStartupScriptএবং এর মধ্যে পার্থক্য কি কেবল RegisterClientScriptBlockরেজিস্টারস্টার্টআপস্ক্রিপ্ট জাভাস্ক্রিপ্টটিকে </form>পৃষ্ঠার সমাপনী ট্যাগের আগে রাখে এবং রেজিস্টারক্লিয়েন্টসক্রিপ ব্লক পৃষ্ঠাটির প্রারম্ভিক <form>ট্যাগের ঠিক পরে রাখে ?
এছাড়াও, আপনি কখন অন্যটির থেকে একটি বেছে নেবেন? আমি একটি দ্রুত নমুনা পৃষ্ঠা লিখেছিলাম যেখানে আমার একটি সমস্যা ছিল এবং আমি কেন এটি ঘটছে তার সঠিক কারণ সম্পর্কে নিশ্চিত নই।
এখানে এসপেক্স মার্কআপটি রয়েছে:
<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>
এখানে কোডের পিছনে রয়েছে:
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());
}
}
সমস্যাটি যখন আমি btnPostBackবোতামটি ক্লিক করি তখন এটি একটি পোস্টব্যাক করে এবং লেবেলটিকে লাল রঙে পরিবর্তন করে, তবে আমি যখন ক্লিক করি তখন btnPostBack2এটি একটি পোস্টব্যাক করে তবে লেবেলের রঙ লাল হয়ে যায় না। কেন? লেবেলটি আরম্ভ না হওয়ায় এটি কি?
আমি আরও পড়লাম যে আপনি যদি একটি ব্যবহার করেন তবে আপনার ব্যবহার করা UpdatePanelদরকার ScriptManager.RegisterStartupScript, তবে আমার যদি একটি থাকে তবে আমি কি MasterPageব্যবহার করব ScriptManagerProxy?