Esempio n. 1
0
        public void RegisterScriptDescriptors(IExtenderControl extenderControl)
        {
            if (extenderControl == null)
            {
                throw new ArgumentNullException("extenderControl");
            }

            Control extenderControlAsControl = extenderControl as Control;

            if (extenderControlAsControl == null)
            {
                throw new ArgumentException(
                          String.Format(CultureInfo.InvariantCulture,
                                        AtlasWeb.Common_ArgumentInvalidType,
                                        typeof(Control).FullName),
                          "extenderControl");
            }

            List <Control> targetControls;

            if (!ExtenderControls.TryGetValue(extenderControl, out targetControls))
            {
                throw new ArgumentException(
                          String.Format(CultureInfo.InvariantCulture,
                                        AtlasWeb.ScriptControlManager_ExtenderControlNotRegistered,
                                        extenderControlAsControl.ID),
                          "extenderControl");
            }

            Debug.Assert(targetControls != null && targetControls.Count > 0);

            // A single ExtenderControl may theoretically be registered multiple times
            foreach (Control targetControl in targetControls)
            {
                // Only register ExtenderControl scripts if the target control is visible and in the control tree.
                // Else, we assume the target was not rendered.
                if (targetControl.Visible && InControlTree(targetControl))
                {
                    IEnumerable <ScriptDescriptor> scriptDescriptors = extenderControl.GetScriptDescriptors(targetControl);
                    RegisterScriptsForScriptDescriptors(scriptDescriptors, extenderControlAsControl);
                }
            }
        }
Esempio n. 2
0
        private static void AddScriptReferenceForExtenderControl(List <ScriptReferenceBase> scriptReferences, IExtenderControl extenderControl)
        {
            IEnumerable <ScriptReference> extenderControlReferences = extenderControl.GetScriptReferences();

            if (extenderControlReferences != null)
            {
                Control extenderControlAsControl            = (Control)extenderControl;
                ClientUrlResolverWrapper urlResolverWrapper = null;
                foreach (ScriptReference extenderControlReference in extenderControlReferences)
                {
                    if (extenderControlReference != null)
                    {
                        if (urlResolverWrapper == null)
                        {
                            urlResolverWrapper = new ClientUrlResolverWrapper(extenderControlAsControl);
                        }
                        // set containing control on each script reference for client url resolution
                        extenderControlReference.ClientUrlResolver = urlResolverWrapper;
                        extenderControlReference.IsStaticReference = false;
                        extenderControlReference.ContainingControl = extenderControlAsControl;

                        // add to collection of all references
                        scriptReferences.Add(extenderControlReference);
                    }
                }
            }
        }