日期:2014-05-17  浏览次数:20473 次

asp.net引用母版页后,子页面引用外部JS文件问题
引用母版页后,母版页的外部css和js文件都还能使用,子页面的外部css也能使用,就是子页面的外部js文件不能使用,
必须放到子页面上才行。

请问各位大虾,这个问题怎么解决啊,不然页面上的js太多了

------解决方案--------------------
有可能是js里取不到控件ID,使用了母版页,子页控件ID都会加上前缀,
一般我们是用<%.ClientID%>,但这个又是c#的语法,在js里是不能使用的
------解决方案--------------------
首先母版页也就是个模型啊!你可以把所有的JS放到一个文件里面!然后引用文件!
------解决方案--------------------
把母版页和其它子页面放在同一层目录下,不然只有在子页面里面重新引用了
------解决方案--------------------
你放到子页面是用js文件还是直接写在页面上的,如果直接写在页面上就不会出差
------解决方案--------------------
ctl00_txtKeyword以前我是人为加上ctl00_,你可以看看你的前缀是多少
------解决方案--------------------
把所有要用到的服务器控件的客户端ID(ClientID)传到客户端的一个变量里,然后用服务器控件的ID查找,这样应该可以。只是想法,没实践过。。。
------解决方案--------------------

右键。。源码。。。

检查一下JS里用的各控件ID。。。

套用模版页ID发生变化。。
------解决方案--------------------
很简单的在模板页的<head></head>里面加这个控件
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
在body里面加这个控件
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder> 

那么引用该模板的的aspx文件就应该是这样的

C# code

<%@ Page Title="" Language="C#" MasterPageFile="~/Layout/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Sicent.WxSkper.Main.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>

------解决方案--------------------
将母板中的js引用改成这样试试:

JScript code

<script type="text/javascript" src='<%= ResolveUrl("~/Js/jquery-1[1].3.1.js")%>'></script>

------解决方案--------------------
C# code
 public string ApplicationPath
    {
        get
        {
            _basePath = this.Request.ApplicationPath;
            if (_basePath.IndexOf("/") >= 0 && _basePath.Length == 1)
                _basePath = "";
            return _basePath;
        }
    }

------解决方案--------------------
对,很有可能就是服务器控件ID改变了,JS调用不到
------解决方案--------------------
js 不能使用!
通常有3种问题: 楼主可以自己调试一下
1、js 路径错误! 母板页和其它页面不在同一目录时,可能会出现此问题。通常css,js 都用相当于网址的根目录(如 “/js/1.js” "/css/1.css") 就可以了!
2、js 文件编码和html 编码不一致! 导入js 时,设置编码。或者把js 的编码改成一致!

3、服务器控件ID改变了,JS调用不到!

右键查看源代码(firebug 更好) 就可以看到html 源代码了!