399 Stimmen

"Die Sammlung Controls kann nicht geändert werden, da das Steuerelement Codeblöcke enthält.

Ich versuche, eine einfache Benutzersteuerung zu erstellen, die ein Schieberegler ist. Wenn ich einen AjaxToolkit SliderExtender zum Benutzersteuerelement hinzufügen, erhalte ich diesen (*&$#()@# Fehler:

Server Error in '/' Application. The Controls collection cannot be modified because the control contains code blocks (i.e. `<% ... %>`). Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: The Controls collection cannot be modified because the control contains code blocks (i.e. `<% ... %>`).

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[HttpException (0x80004005): The Controls collection cannot be modified because the control contains code blocks (i.e. `<% ... %>`).]    System.Web.UI.ControlCollection.Add(Control child) +8677431    AjaxControlToolkit.ScriptObjectBuilder.RegisterCssReferences(Control control) in d:\E\AjaxTk-AjaxControlToolkit\Release\AjaxControlToolkit\ExtenderBase\ScriptObjectBuilder.cs:293 AjaxControlToolkit.ExtenderControlBase.OnLoad(EventArgs e) in d:\E\AjaxTk-AjaxControlToolkit\Release\AjaxControlToolkit\ExtenderBase\ExtenderControlBase.cs:306 System.Web.UI.Control.LoadRecursive()
+50    System.Web.UI.Control.LoadRecursive()
+141    System.Web.UI.Control.LoadRecursive()
+141    System.Web.UI.Control.LoadRecursive()
+141    System.Web.UI.Control.LoadRecursive()             
+141    System.Web.UI.Control.LoadRecursive()
+141    System.Web.UI.Control.LoadRecursive()
+141    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

Version Information: Microsoft .NET Framework Version:2.0.50727.3074; ASP.NET Version:2.0.50727.3074

Ich habe versucht, einen Platzhalter in das Benutzersteuerelement zu setzen und das Textfeld und die Schiebereglererweiterung programmatisch zum Platzhalter hinzuzufügen, aber ich erhalte immer noch den Fehler.

Hier ist der einfache Code:

<table cellpadding="0" cellspacing="0" style="width:100%">
    <tbody>
        <tr>
            <td></td>
            <td>
                <asp:Label ID="lblMaxValue" runat="server" Text="Maximum" CssClass="float_right" />
                <asp:Label ID="lblMinValue" runat="server" Text="Minimum" />
            </td>
        </tr>
        <tr>
            <td style="width:60%;">
                <asp:CheckBox ID="chkOn" runat="server" />
                <asp:Label ID="lblPrefix" runat="server" />:&nbsp;
                <asp:Label ID="lblSliderValue" runat="server" />&nbsp;
                <asp:Label ID="lblSuffix" runat="server" />
            </td>
            <td style="text-align:right;width:40%;">                

                    <asp:TextBox ID="txtSlider" runat="server" Text="50" style="display:none;" />
                    <ajaxToolkit:SliderExtender ID="seSlider" runat="server" 
                        BehaviorID="seSlider" 
                        TargetControlID="txtSlider" 
                        BoundControlID="lblSliderValue" 
                        Orientation="Horizontal" 
                        EnableHandleAnimation="true" 
                        Length="200" 
                        Minimum="0" 
                        Maximum="100" 
                        Steps="1" />

            </td>
        </tr>
    </tbody>
</table>

Was ist das Problem?

1voto

Hugo Punkte 11

Eine andere Möglichkeit besteht darin, eine andere .aspx-Seite als die Seite zu verwenden, auf die Sie verlinken möchten.

So sieht die Kopfzeile der Masterpage aus:

<head runat="server">
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
    <link href="CSS/AccordionStyles.aspx" rel="stylesheet" type="text/css" />
</head>

Das referenzierte .aspx-Formular enthält Ihren Inhalt:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AccordionStyles.aspx.cs" Inherits="IntranetConnectCMS.CSS.AccordionStyles" %>
.AccordionHeader
{
    cursor: pointer;
    background-image: url(<%=ResolveUrl("~/Images/Backgrounds/AccordionPaneHeaderClosed.png") %>);
    background-repeat: no-repeat;
}

.AccordionHeaderSelected
{
    cursor: pointer;
    background-image: url(<%=ResolveUrl("~/Images/Backgrounds/AccordionPaneHeaderOpen.png") %>);
    background-repeat: no-repeat;
}
.AccordionContent
{
    background-image: url(<%=ResolveUrl("~/Images/Backgrounds/AccordionPaneContent.png") %>);
    background-repeat: no-repeat;
}

Schließlich brauchen Sie die .aspx-Seite, um dem Browser mitzuteilen, dass Sie CSS-Inhalte senden:

protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentType = "text/css";
}

0voto

Miank Punkte 105

Versuchen Sie, Ihre Java-Skript-Code außerhalb der Kopf-Tag wird es definitiv work.Its gelöst, wenn ich kopieren und fügen Sie meine Java-Skript-Code an der Unterseite der Seite. In der vorherigen seine in HEAD-Tag platziert jetzt kurz vor dem Schließen des Formular-Tag.

    </div>
        <script>
                    function validate() {
                        try {

                        var username = document.getElementById("<%=txtUserName.ClientID%>").value;
                        var password = document.getElementById("<%=txtPWD.ClientID%>").value;

                            if (username == "" && password == "")
                                alert("Enter Username and Passowrd");
                            else {
                                if (username == "")
                                    alert("Enter Username");
                                else if (password == "")
                                    alert("Enter Password");
                            }

                        }

                    catch (err) {
                    }
                }
                </script>
</form>

0voto

victor Punkte 1

Entfernen Sie den Teil mit den Server-Tags und platzieren Sie ihn an einer anderen Stelle, wenn Sie dynamische Steuerelemente aus dem Code dahinter hinzufügen möchten

Ich habe mein JavaScript aus dem Kopfbereich der Seite entfernt und in den Hauptteil der Seite eingefügt, so dass es funktioniert

0voto

live-love Punkte 40586

In meinem Fall habe ich diesen Fehler bekommen, weil ich InnerText fälschlicherweise auf ein div mit html darin gesetzt habe.

Beispiel:

SuccessMessagesContainer.InnerText = "";

   <div class="SuccessMessages ui-state-success" style="height: 25px; display: none;" id="SuccessMessagesContainer" runat="server">
      <table>
         <tr>
            <td style="width: 80px; vertical-align: middle; height: 18px; text-align: center;">
               <img src="<%=Image_success_icn %>" style="margin: 0 auto; height: 18px;
                  width: 18px;" />
            </td>
            <td id="SuccessMessage" style="vertical-align: middle;" class="SuccessMessage" runat="server" >
            </td>
         </tr>
      </table>
   </div>

0voto

mdhameed Punkte 53

In einigen Fällen funktionieren ResolveUrl und ResolveClientUrl, aber nicht immer, insbesondere bei js-Skriptdateien. Was passiert, ist, dass es für einige Seiten funktioniert, aber wenn Sie zu einigen anderen Seiten navigieren, könnte es aufgrund des relativen Pfads dieser bestimmten Seite nicht funktionieren.

Daher schlage ich vor, dass Sie Ihre Seiten immer noch einmal komplett überprüfen, ob alle Ihre Javascript-Referenzen in Ordnung sind oder nicht. Öffnen Sie Ihre Website in Google Chrome -> klicken Sie mit der rechten Maustaste auf die Seite -> klicken Sie auf Quellseite anzeigen -> HTML erscheint -> klicken Sie jetzt auf Ihre JS-Hyperlinks; wenn es gut funktioniert, sollte es die JS-Datei in einem anderen Browserfenster öffnen, andernfalls wird es nicht geöffnet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X