通过JavaScript中的XMLHTTP对象可以得到一个网页的HTML码:
function ShowSAManageGroupItemToolTips (accidentID, manageGroupID)
...{
if(ShowToolTips)
...{
var url = "DiagramItemToolTips.aspx?AccidentID=" + accidentID + "&ManageGroupID=" + manageGroupID;
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open ("GET", url, false);
xmlhttp.send();
ShowToolTips (xmlhttp.responseText);
}
}
现在的工作就是,一般Aspx页面生成的内容都是包含了<html><Form>******标签的。这种内容我们是无法直接赋值给一 个div的,因为一个页面只能包含一个form。
此时如果尝试将Aspx页面中的<html><form>*****标记删掉,只留下ToolTips需要的控件,你可能会遇到类似这样的提 示:“TextBox必须被放置在标记了runat=server的form中”。
看似疑无路。
其实,我们可以利用UserControl的一个特性来解决,因为UserControl不需要一定放在Runat=server的form中。这样,我们可以在 UserControl中设计ToolTips界面,在页面中放置UserControl,然后删除页面中的<html>标记:
设计UserControl,然后拖到页面上,此时页面的代码是:
<%...@ Register TagPrefix="uc1" TagName="SAManageGroupItemToolTips" Src="../UserControl/SAManageGroupItemToolTips.ascx" %>
<%...@ Page language="c#" Trace="False" Codebehind="DiagramItemToolTips.aspx.cs" AutoEventWireup="false" Inherits="Tencent.OA.Helper.Web._SeriousAccident.DiagramItemToolTips" %>
<HTML>
<HEAD>
<title></title>
<meta http-equiv="pragma" content="no- cache">
<meta http-equiv="Cache- Control" content="no- store, no-cache, max-age=0, must-revalidate">
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body xmlns:tof="http://www.oa.com/tof">
<form id="Form1" method="post" runat="server">
<uc1:SAManageGroupItemToolTips id="SAManageGroupItemToolTips1" runat="server" EnableViewState="False"></uc1:SAManageGroupItemToolTips>
</form>
</body>
</HTML>
将页面中的html标记删掉,只留下对userControl的声明,此时页面的代码是:

<%...@ Register TagPrefix="uc1" TagName="SAManageGroupItemToolTips" Src="../UserControl/SAManageGroupItemToolTips.ascx" %>
<%...@ Page language="c#" Trace="False" Codebehind="DiagramItemToolTips.aspx.cs" AutoEventWireup="false" Inherits="Tencent.OA.Helper.Web._SeriousAccident.DiagramItemToolTips" %>
<uc1:SAManageGroupItemToolTips id="SAManageGroupItemToolTips1" runat="server" EnableViewState="False"></uc1:SAManageGroupItemToolTips>
编译并运行DiagramItemToolTips.aspx,查看其HTML源代码,已经是一个嵌套了若干子控件的 <Span>了。
这时就可以直接将该网页的源代码赋值给一个div的innerHtml。
本文介绍了一种使用UserControl解决ASP.NET页面中控件加载问题的方法,特别是当需要通过JavaScript获取远程ASPX页面内容时,避免因删除HTML及FORM标签导致的控件加载失败。
1万+

被折叠的 条评论
为什么被折叠?



