2009-03-24 26 views
10

Tôi có một trang có trang cái. Tôi có đặt các tập lệnh và các thẻ liên kết bên trong các trình giữ chỗ nội dung asp hay bên ngoài hay không quan trọng.Làm các thẻ script và thẻ liên kết đi vào bên trong asp: content hoặc bên ngoài

Khi tôi đặt nó bên ngoài, tôi nhận được cảnh báo sau đây:

Chỉ kiểm soát nội dung được phép trực tiếp trong một trang nội dung chứa các điều khiển nội dung.

Trả lời

7

tôi có thể thấy năm (hoặc 8) cách để làm điều đó:

  1. Trong codebehind (.cs hoặc .vb) sử dụng:
    • Scriptmanager.RegisterClientScriptinclude - sử dụng một tuyệt đối/đường dẫn tương đối
    • Scriptmanager.RegisterClientScriptInclude - sử dụng tài nguyên được nhúng
    • Scriptmanager.RegisterSlientScriptBlock - với vị chua của bạn ce bên
  2. Thêm nó inline trang ASPX của bạn trong thiết kế
  3. Bám nó bên trong asp: Nội dung mà nội dung sống bên trong thẻ nội dung.
  4. Gắn nó vào bên trong nội dung: nội dung nằm trong đầu (Bạn đã nói đây không phải là một tùy chọn, vì vậy hãy bỏ qua điều này).
  5. Thêm chương trình theo cách lập trình bằng Trình quản lý tập lệnh bên trong điều khiển bạn sử dụng trên trang như trên.

"Chỉ kiểm soát nội dung được phép trực tiếp trên trang nội dung chứa Điều khiển nội dung" - bạn đã quên runat = "server" chưa?

1

Ngoài. Bên trong của ContentPlaceholders sẽ được thay thế bằng nội dung từ các trang của bạn dù sao đi chăng nữa cũng không có ý nghĩa gì khi đặt bất kỳ thứ gì trong đó.

1

bên ngoài. trong trang chính

Trình giữ chỗ là các điều khiển gói cho các trang xuất phát từ trang chính.

2

Nếu bạn đang đề cập đến <asp:Content /> thẻ, bạn không thể đặt bất kỳ thứ gì bên ngoài chúng trong một trang .aspx. Vì vậy, bạn bị giới hạn khi đặt chúng vào trong thẻ <asp:Content />. Nếu bạn muốn <script /><link /> thẻ, bạn cần phải đặt <asp:ContentPlaceHolder /> trong trang <head> của trang chính hoặc thêm chúng động thông qua bộ sưu tập Controls của Trang.

5

Nếu đó là tập lệnh và liên kết cho tất cả trang, nó phải nằm ngoài bất kỳ ContentPlaceHolders nào. Nếu đó là tập lệnh và liên kết cho trang này, nó sẽ đi vào bên trong Nội dung bên trong đầu. Nếu đó là các kịch bản mặc định, hãy đặt nó trong một ContentPlaceHolder đầu và có thể được thay thế bằng trang con nếu cần. (VS thường phàn nàn về một ContentPlaceHolder trong đầu, nhưng nó hoạt động tốt cho tôi).

// master Page 
<head runat="server"> 
    <asp:ContentPlaceHolder id="head" runat="server"> 
     <!-- Default scripts and CSS --> 
     <link rel="stylesheet" type="text/css" href="default.css" /> 
     <script type="text/javascript" src="jquery.js"></script> 
    </asp:ContentPlaceHolder> 
    <!-- Mandatory scripts and css --> 
    <link rel="stylesheet" type="text/css" href="all.css" /> 
    <script type="text/javascript" src="all.js"></script> 
</head> 
<body> 
    Master Page! 
    <asp:ContentPlaceHolder id="body" runat="server" /> 
</body> 

// Child (no JQuery) 
<asp:Content ContentPlaceHolderID="head" runat="server"> 
    <link rel="stylesheet" type="text/css" href="default.css" /> 
    <!-- Don't need JQuery --> 
    <script type="text/javascript" src="prototype.js"></script> 
</asp:Content> 
<asp:Content ContentPlaceHolderID="body" runat="server"> 
    Child Page! 
</asp:Content> 

// Child 2 (with JQuery) 
<asp:Content ContentPlaceHolderID="body" runat="server"> 
    Child Page! 
</asp:Content> 
+0

Dường như nó hoạt động mặc dù nó phàn nàn và tôi có nó ở bên ngoài, nhưng nếu tôi không có phần giữ chỗ đầu. – Xaisoft

+0

Thêm một. ;) Tôi thường kết thúc với ít nhất 3 trình giữ chỗ: 1 đầu cho các tập lệnh và kiểu mặc định, 1 đầu để thêm tập lệnh và kiểu và 1 nội dung. –

1

Sử dụng asp.net scriptreference tag trong trang chủ để thêm tham chiếu đến tệp javascript và bạn sẽ có thể truy cập tất cả những gì bạn cần trong tệp javascript như thể bạn đã thêm vào trang địa phương.

Các vấn đề liên quan