Я работаю над несколько расширенной пользовательской структурой для некоторых веб-сайтов, которые я разрабатываю на работе, и я внедряю для нее небольшую систему плагинов. Я хочу каким-то образом зарегистрировать плагины в файле ASPX, чтобы потом я мог подключаться к различным событиям страницы (Load, PreRender и т. Д.) После вызова их последовательно в моей функции Page_Init, например. Я буду прыгать прямо в коде, так что вы видите, что я хочу сделать:Создать настраиваемую директиву ASP.NET (не MVC)?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Plugin TypeName="MyFramework.Plugin.Core" Arg1="arg1" Arg2="arg2" %>
<%@ Plugin TypeName="MyFramework.Plugin.MainMenu" Arg1="arg1" Arg2="arg2" %>
<%@ Plugin TypeName="MyFramework.Plugin.IE6Hacks" Arg1="arg1" Arg2="arg2" %>
<%@ Plugin TypeName="MyFramework.Plugin.Footer2015" Arg1="arg1" Arg2="arg2" %>
<%@ Plugin TypeName="MyFramework.Plugin.SortableGridViews" Arg1="arg1" Arg2="arg2" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>blah</title>
</head>
<body>
<form id="form1" runat="server"> Blah... </form>
</body>
</html>
См эти <% Plugin %>
директив? они не существуют в ASP.NET, но я хочу их создать. Я ничего не могу найти в Google относительно этого материала. Можно ли создать пользовательский?
Моя идея состоит в том, что как только они будут «зарегистрированы» с этими директивами, я могу пропустить их все (хранится в массиве каждый раз при ударе директивы или в событии Page_Init) и действовать соответствующим образом.
Еще одна идея у меня было использовать блоки кода вместо:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<% RegisterPlugin("MyFramework.Plugin.Core"); %>
<% RegisterPlugin("MyFramework.Plugin.MainMenu"); %>
<% RegisterPlugin("MyFramework.Plugin.IE6Hacks"); %>
<% RegisterPlugin("MyFramework.Plugin.Footer2015"); %>
<% RegisterPlugin("MyFramework.Plugin.SortableGridViews"); %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>blah</title>
</head>
<body>
<form id="form1" runat="server"> Blah... </form>
</body>
</html>
НО функции вызываются после всех страниц событий вместо запуска перед ними (или, по крайней мере, до Page_Load), не оставляя меня нет способ обнаружения, если у меня есть плагины, зарегистрированные для того, чтобы действовать соответственно в событиях Page_Load моей базовой страницы и т. д.
Любые идеи действительно оценены :). Заранее спасибо!
Там вы идете, вот как вы можете это сделать DARKGuy.Щедрость, отнятая All Star снова (LOL). Хороший вопрос и отличный ответ. –