【发布时间】:2017-07-27 00:06:06
【问题描述】:
此标记支持未在我正在处理的页面的移动版本中呈现的代码。
<%@ 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 的响应,我修改了我的页面以引用 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 提供的帮助,但该参考对如何将这些控制指令表示为代码没有帮助。
看起来我可能需要使用选项三,它重定向到另一个不包含指令的页面。
【问题讨论】:
-
您可以尝试this 代码隐藏方法。
标签: c# asp.net scriptmanager