你要明白<!--#include file="b.html"-->的作用,他就是把一个文件包含到一个文件中,在a.aspx中看到的是b.html中的内容,而非<!--#include file="b.html"-->语句,那么要操作b.html中的内容,就跟操作a.aspx中的dom元素一样操作。你写一个简单的测试,b.html页面中只有<div id="divInB">a div in B! </div>,然后你在a .aspx中用include来包含这个文件,注意路径问题,然后你右键查看源代码就明白了。你在a.aspx中最后用$(function(){alert($("#divInB").html());});也能看到效果。
注意:b.html如果是一个标准的html页面,那么就存在documen嵌套的问题,怎么操作,你自己找资料吧。
@kylin.chen: 楼主说的我知道,只是现在问题是想操作变量m!!
@夜风冷: 你自己知道?!我看你还是没理解,我给你写出来吧。
abc.html页面:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script>
var UserName = "tiger"; //这是你所说的变量吧
</script>
</head>
<body>
<div id="divInABC">good man</div>
</body>
</html>
site.master页面(我测试,就直接放这里面了,只复制后面一部分)
<asp:ContentPlaceHolder ID="ScriptsSection" runat="server" />
<!--#include file="/Scripts/abc.html"-->
</body>
</html>
<script>
var abc = "张三";
$(function () {
alert($("#divInABC").html() + abc);
});
</script>
<script>
if (abc != null) abc = "李四";
$(function () {
alert($("#divInABC").html() + abc);
if (UserName) //这是你所说的变量吧
alert(UserName);
});
</script>
上面我写了两个script标签,你用include ,实际上就是两个script的操作。
(我又看了一下document嵌套的问题,好像IE10下面是忽略里面的HTML标签的。)
@kylin.chen: 楼主好人,只是可能还没看清问题,变量m是在aspx页面的,说白了就是能不能在html页面操作aspx页面里面的变量m!!!
<--include file=“b.HTML”>是用什么开发的啊?
你确定你的是Asp.Net而不是Asp???。
确定以及肯定
@夜风冷: include是包含指令,是将b的代码直接嵌入到a吧。所以当成一个页面就可以了吧~再者,将m用隐藏域保存,然后用$("#id")找到,也是能够找到的。呵呵,我还没在aspx中见到include指令,你是用了其他东西吗?
只要服务器支持SSI就可以这样用,但注意一般被包含的文件是没有HTML,body等标签的。如果要包含一个完整的页面,采用Iframe比较多。
比如网站的版权信息都是一样的,可以用include方式啊,这个方便的。只是他的这种需求比较怪异,很少有人这样做。
@kylin.chen: 原来,我知道php和asp才是这样做的,。没想到asp.net还可以这样做。现在用MVC,直接分部视图就解决了这个问题了,而且实现更优雅~
感谢指教,学习了~
@幻天芒: 没办法,项目需要……
@幻天芒: 你和楼上的都是一个错误,没看清问题,现在是问能不能实现这样的功能:一个单独的html页面能不能操作一个包含他的aspx页面里面的变量……
@夜风冷: 道理是一样的啊,你必须把M这个变量放到include 前面啊,实际上是包含的文件已经生成HTML了,执行script了,而你M变量还没有生成吗。应该是一个顺序问题啊,你要确认在执行访问M的代码前,这个m已经存在了。
我没有测试,你自己测试一把吧。要理解ssi的原理。
@幻天芒: 那也存在这个问题,因为是js脚本。razor是后台生成HTML,跟aspx都一样的。
@kylin.chen: 操作肯定是可以的,不过需要注意顺序问题。当成一个页面处理就行,include指令,处理出来就是一个页面。我说MVC,是指MVC很容易实现include这样的功能。