Рассмотрите возможность разработки веб-элемента управления (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) Page.ClientScript.RegisterClientScriptInclude
3) Page.ClientScript.RegisterOnSubmitStatement
4) Page.ClientScript.RegisterStartupScript
Кроме того: можно ли это применить и к javascript и css?
Спасибо