此标记支持未在我工作的页面的移动版本中呈现的代码。
<%@ 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" %>
毫不奇怪,加载了许多不必要的脚本。这很糟糕。
如果有标记使这些注册成为有条件的,请参阅文档。否则,我目前的想法是使用与标记等效的显式代码,并以此方式使其成为条件。
我从this rather old resource发现了ScriptManager,但上面的标记没有明确引用js文件,所以我不知道如何在两者之间进行映射。有人可以建议吗?
尝试使用superjos&#39;下面的回复我修改了我的页面以引用Page.Mobile,一个方便的布尔属性:
<%@ 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" %>
<%@ } %>
但这会产生Parser Error Message: The server block is not well formed.
像这样写
<%@ 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" %>
...
}
不会产生错误但不会被处理; if语句和大括号只是在浏览器中传递并呈现为文本。
这让我回到选项二,使用ScriptManager将指令映射到显式代码来注册东西。任何人?
感谢Pedro尝试提供帮助,但该参考文献并没有帮助我们将这些控制指令表达为代码。
看起来我可能需要使用选项3,它会重定向到另一个不包含指令的页面。
答案 0 :(得分:0)
你试过this SO answer吗?基本上,通过在C#代码中有条件地获取一个真/假值:
val pattern = """(?<!\\)\.""".r
pattern.split("""a.b.c\.d.e""")
// res1: Array[String] = Array(a, b, c\.d, e)
然后在Razor中仅使用代码中的那一位作为public bool IsDebugBuild
{
get
{
#if DEBUG
return true;
#else
return false;
#endif
}
}
条件,将其余部分保留在Razor中?
Another answer也是这样说的。
免责声明:我没有尝试过这个,而且我还没有玩过@if
指令。