नीचे के दौरान पंजीकृत है कैसे जाँच करने के लिए कोड मैं वर्तमान में क्रियान्वित किया है है।अगर ग्राहक स्क्रिप्ट पहले से ही एक आंशिक पोस्टबैक
if (!Page.ClientScript.IsStartupScriptRegistered(Page.GetType(), scriptKey))
{
ScriptManager scriptManager = ScriptManager.GetCurrent(page);
if (scriptManager != null && scriptManager.IsInAsyncPostBack)
{
//if a MS AJAX request, use the Scriptmanager class
ScriptManager.RegisterStartupScript(Page, Page.GetType(), scriptKey, script, true);
}
else
{
//if a standard postback, use the standard ClientScript method
Page.ClientScript.RegisterStartupScript(Page.GetType(), scriptKey, script, true);
}
}
रूप
this जवाब में सुझाव दिया ताकि मैं अर्थात जब वहाँ आंशिक पोस्टबैक और एक पूर्ण पोस्टबैक है दोनों बार पर स्टार्टअप स्क्रिप्ट रजिस्टर कर सकते हैं मैं कर रहा हूँ
।
समस्या Page.ClientScript.IsStartupScriptRegistered(Page.GetType(), scriptKey)
है हमेशा (यहां तक कि जब स्क्रिप्ट से पहले पंजीकृत है) झूठे रिटर्न जब यह आंशिक पोस्टबैक है। और मुझे ScriptManager नहीं मिला। IStartupScriptRegistered (स्थिर) विधि। इसके परिणामस्वरूप, सभी आंशिक/async पोस्टबैक पर अतिरिक्त स्क्रिप्ट उत्सर्जित की जाती है।
कृपया ध्यान दें कि मैं अपने मास्टरपेज में AjaxControlToolkit संस्करण 4.1 यानी ToolkitScriptManager
के स्क्रिप्ट प्रबंधक का उपयोग कर रहा हूं। लेकिन मुझे कोई बात नहीं है कि इसके साथ कुछ करना है।
अद्यतन
<asp:UpdatePanel ID="ContactDetailsUpdatePanel" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="UpdateContactDetailsButton" EventName="Click" />
</Triggers>
<ContentTemplate>
<div id="ContactDetailsContent" class="contact_details_content">
<div class="customer_contactdetails_left_pane">
<div class="customer_name_field">
<asp:Label ID="CustomerNameLabel" runat="server" Text="Customer" />
<asp:TextBox ID="CustomerNameValue" runat="server" />
</div>
<div class="customer_address_field">
<asp:Label ID="CustomerAddressLabel" runat="server" Text="Address" />
<asp:TextBox ID="CustomerAddressValue" runat="server" />
<asp:TextBox ID="CustomerAddressValue1" runat="server" />
<asp:TextBox ID="CustomerAddressValue2" runat="server" />
<asp:TextBox ID="CustomerAddressValue3" runat="server" />
</div>
<div class="customer_postcode_field">
<asp:Label ID="CustomerPostcodeLabel" runat="server" Text="Postcode" />
<asp:TextBox ID="CustomerPostcodeValue" runat="server" />
</div>
</div>
<div class="customer_contactdetails_right_pane">
<div>
<asp:Label ID="CustomerContactLabel" runat="server" Text="Contact" />
<asp:TextBox ID="CustomerContactValue" runat="server" />
</div>
<div>
<asp:Label ID="CustomerTelephoneLabel" runat="server" Text="Telephone" />
<asp:TextBox ID="CustomerTelephoneValue" runat="server" />
</div>
<div>
<asp:Label ID="CustomerMobileLabel" runat="server" Text="Mobile" />
<asp:TextBox ID="CustomerMobileValue" runat="server" />
</div>
<div>
<asp:Label ID="CustomerFaxLabel" runat="server" Text="Fax" />
<asp:TextBox ID="CustomerFaxValue" runat="server" />
</div>
<div>
<asp:Label ID="CustomerEmailLabel" runat="server" Text="Email" />
<asp:TextBox ID="CustomerEmailValue" runat="server" />
</div>
<div>
<asp:Label ID="CustomerWebLabel" runat="server" Text="Web" />
<asp:TextBox ID="CustomerWebValue" runat="server" />
</div>
</div>
</div>
<div class="update_button_field">
<asp:Button ID="UpdateContactDetailsButton" runat="server" Text="Update"
onclick="UpdateContactDetailsButton_Click" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
अग्रिम धन्यवाद।
नोट: इस समस्या पर प्रगति को समझने में सक्षम होने के लिए, कृपया उत्तर देने से पहले this उत्तर पर टिप्पणियां देखें।
अद्यतन
मैं जावास्क्रिप्ट है कि अगर स्क्रिप्ट पहले से ही तो निष्पादित हो रहा है दो बार निष्पादित नहीं में एक चेक डालकर इस समस्या का एक अस्थायी समाधान को लागू किया है। प्रत्येक आंशिक पोस्टबैक पर जावास्क्रिप्ट अभी भी कई बार लगाया जा रहा है। इसे रोक नहीं सका।
इस पोस्ट के लिए विचारों के रूप में वृद्धि हो रही है, मैं वहाँ अन्य लोग हैं, जो भी इस समस्या का जवाब चाहते हो सकता है हैं कि देख सकते हैं।
पूरी समस्या को समझने के लिए कृपया http://stackoverflow.com/questions/1952817/asp-net-javascript-inside-ajax-updatepanel/1953122#1953122 पर जाएं। Page.ClientScript.IsStartupScriptRegistered() मुझे यह http://msdn.microsoft.com/en-us/library/62d1676x.aspx केवल देता है। और आंशिक पोस्ट बैक के मामले में यह हमेशा झूठा होता है। – IsmailS
मैंने अभी मार्कअप जोड़ा है। – IsmailS
इससे मेरी मदद नहीं हुई। मुझे नहीं पता कि इसे किसने वोट दिया। मैं पहले से ही इस विधि का उपयोग कर रहा हूं और मेरे प्रश्न में इसका उल्लेख है। – IsmailS