Рассмотрите возможность создания веб-элемента управления (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
- это то, что приходит на помощь.
Тем не менее, существует множество функций для регистрации script... можете ли вы сказать о различии между ними?
1) Page.ClientScript.IsClientScriptBlockRegistered
2) Page.ClientScript.IsClientScriptIncludeRegistered
3) Page.ClientScript.IsOnSubmitStatementRegistered
4) Page.ClientScript.IsStartupScriptRegistered
И соответствующие методы набора?
1) Page.ClientScript.RegisterClientScriptBlock
2) Page.ClientScript.RegisterClientScriptInclude
3) Page.ClientScript.RegisterOnSubmitStatement
4) Page.ClientScript.RegisterStartupScript
Кроме того: может ли это применяться к javascript и css тоже?
Thankyou