2017-07-27 2 views
1

Dieses Markup unterstützt Code, der in der mobilen Version der Seite, auf der ich arbeite, nicht gerendert wird.So geben Sie Anweisungen als C# aus, damit sie konditional sein können

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 
<%@ Register TagPrefix="ComponentArt" Namespace="ComponentArt.Web.UI" Assembly="ComponentArt.Web.UI" %> 
<%@ Register Src="Cart.ascx" TagName="Cart" TagPrefix="uc1" %> 
<%@ Register Src="Search.ascx" TagName="Search" TagPrefix="uc5" %> 
<%@ Register Src="Credits.ascx" TagName="Credits" TagPrefix="uc6" %> 
<%@ Register Src="Menu.ascx" TagName="Menu" TagPrefix="uc3" %> 
<%@ Register Src="taskspanel.ascx" TagName="TasksPanel" TagPrefix="uc6" %> 

Es ist nicht überraschend, dass viele unnötige Skripts geladen werden. Das ist schlecht.

Wenn es Markup gibt, um diese Registrierungen bedingt zu machen, bitte verweisen Sie mich auf die Dokumentation. Ansonsten ist mein aktueller Gedanke, expliziten Code zu verwenden, der dem Markup entspricht, und ihn so zu konditionieren.

Ich habe ScriptManager von this rather old resource entdeckt, aber das obige Markup referenziert js-Dateien nicht explizit, so dass ich nicht weiß, wie man zwischen den beiden mappt. Kann jemand beraten?

Versuch superjos' Antwort zu verwenden unten ich meine Seite geändert Page.Mobile, eine Boolesche Eigenschaft bequem bereits an seinem Platz zu verweisen:

<%@ Page Language="C#" AutoEventWireup="false" EnableViewStateMac="false" CodeBehind="Forms.aspx.cs" Inherits="ASSAOHS.forms" %> 
<%@ if (!Mobile) { %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 
<%@ Register TagPrefix="ComponentArt" Namespace="ComponentArt.Web.UI" Assembly="ComponentArt.Web.UI" %> 
<%@ Register Src="Cart.ascx" TagName="Cart" TagPrefix="uc1" %> 
<%@ Register Src="Search.ascx" TagName="Search" TagPrefix="uc5" %> 
<%@ Register Src="Credits.ascx" TagName="Credits" TagPrefix="uc6" %> 
<%@ Register Src="Menu.ascx" TagName="Menu" TagPrefix="uc3" %> 
<%@ Register Src="taskspanel.ascx" TagName="TasksPanel" TagPrefix="uc6" %> 
<%@ } %> 

aber dies erzeugt Parser Error Message: The server block is not well formed.

Schreiben es wie diese

<%@ Page Language="C#" AutoEventWireup="false" EnableViewStateMac="false" CodeBehind="Forms.aspx.cs" Inherits="ASSAOHS.forms" %> 
@if (!Mobile) { 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 
<%@ Register TagPrefix="ComponentArt" Namespace="ComponentArt.Web.UI" Assembly="ComponentArt.Web.UI" %> 
<%@ Register Src="Cart.ascx" TagName="Cart" TagPrefix="uc1" %> 
... 
} 

erzeugt keinen Fehler, wird aber nicht verarbeitet; Die if-Anweisung und geschweifte Klammern werden einfach übergeben und als Text im Browser gerendert.

Was mich zurück mit Option zwei lässt, ordnen Sie die Anweisungen zu expliziten Code mit ScriptManager, um Zeug zu registrieren. Irgendwelche Abnehmer?


Dank Pedro für den Versuch, aber das Bezug zu helfen, hilft nicht mit, wie diese Steuerrichtlinien als Code zum Ausdruck bringen.

Es sieht so aus, als müsste ich Option drei verwenden, die auf eine andere Seite umleitet, die die Direktiven nicht enthält.

+0

Sie können [this] (https://stackoverflow.com/a/4405257/4014832) Code hinter Ansatz versuchen. –

Antwort

0

Haben Sie versucht mit this SO answer? Im Grunde genommen durch eine gewissen Wert bedingt mit einem Wahr/Falsch-Wert in C# -Code unter:

public bool IsDebugBuild 
{ 
    get 
    { 
     #if DEBUG 
     return true; 
     #else 
     return false; 
     #endif 
    } 
} 

und dann unter Verwendung von nur, dass etwas von Code als @if Zustand in Razor, hält die ganzen Rest noch in Razor?

Another answer sagt das gleiche auch.

Haftungsausschluss: Ich habe dies nicht versucht, und ich habe nicht mit <%@ Register> Direktiven für eine laaaaaange Zeit gespielt.

+0

Ich habe bereits eine Flagge der Form, die Sie vorschlagen, und ich bin dabei, Ihre Antwort zu versuchen. Danke, dass du meine Unkenntnis der Razor-Syntax ausgeglichen hast. –

+0

Ich bin nur nicht sicher, dass es mit 'Register' Direktiven arbeiten wird. Wenn es um die Razor-Syntax geht, versuchen Sie, nach * Razor zu suchen, wenn dann noch *, z. [hier] (http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/) – superjos

Verwandte Themen