Добавление стилей и скриптов в веб-элементы управления ASP.NET (ascx) без повторения директив включения

Рассмотрите возможность разработки веб-элемента управления (ASP. NET). Что вы действительно хотели бы сделать, так это стилизовать и развить этот элемент управления очень хорошим способом, вот очень хороший способ сделать это (именно так я бы хотел сделать, далее в этом вопросе я объясню, почему я не могу сделайте это).

Программный подход

1) Я создаю свой элемент управления в отдельной папке с именем WebControls и назову его (например) MyWebControl . У меня будут следующие файлы: MyWebControl.ascx и MyWebControl.ascx.cs .

2) Учитывая, что мой элемент управления является сложным элементом управления, я связываю стиль и динамическое поведение клиента ссылаясь в элементе управления html на таблицу стилей css с именем MyWebControl.ascx.css и файл javascript с именем MyWebControl.ascx.js .

3) В моем контроле я делаю следующее:

<%@ Control Language="C#" 
            AutoEventWireup="true" 
            CodeFile="MyWebControl.ascx.cs" 
            Inherits="MyApp.WebControls.MyWebControl" %>

<link href="MyWebControl.ascx.css" rel="stylesheet" type="text/css" />
<script src="MyWebControl.ascx.js" type="text/javascript"></script>

<div>
...
</div>

Вот и все!

Проблема

В этом есть проблема: когда мой элемент управления отображается, и на странице есть несколько таких моих элементов управления, я получаю ссылки на файлы css и js дублируются или даже повторяются более одного раза.

Как связать внешний файл таблицы стилей / файл javascript в моем элементе управления, чтобы не возникали эти плохие вещи?

РЕДАКТИРОВАТЬ

Хорошо, немного посмотрев с помощью других участников сообщества я смог понять, что Page.ClientScript - это то, что приходит на помощь.

Однако есть много функций возможность регистрации скрипта ... можете ли вы отличить их?

1) Page.ClientScript.IsClientScriptBlockRegistered

2) Page.ClientScript.IsClientScriptIncludeRegistered

3) Page.ClientScript.IsOnSubmitStatementRegistered

4) Page.ClientScript.IsStartupScriptRegistered

И соответствующие методы набора?

1) Page.ClientScript.RegisterClientScriptBlock

2) 2) Page.ClientScript.RegisterClientScriptInclude

3) Page.ClientScript.RegisterOnSubmitStatement

4) Page.ClientScript.RegisterStartupScript

Кроме того: можно ли это применить к javascript и css Thankyou?

13
задан Andry 16 June 2011 в 21:55
поделиться