के बीच फर्क सिर्फ इतना है RegisterStartupScriptऔर RegisterClientScriptBlockकि RegisterStartupScript समापन से पहले जावास्क्रिप्ट डालता है </form>पेज और RegisterClientScriptBlock कहते हैं यह सही शुरू करने के बाद से टैग <form>पृष्ठ पर टैग से?
इसके अलावा, आप कब एक का चयन करेंगे? मैंने एक त्वरित नमूना पृष्ठ लिखा था, जहां मेरा एक मुद्दा था और मुझे यकीन नहीं है कि ऐसा क्यों हो रहा है इसका सटीक कारण।
यहाँ aspx मार्कअप है:
<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?