我正在为我在工作中开发的一些网站设计一些高级定制框架,并且正在为它实现一个小插件系统。例如,我想在ASPX文件中以某种方式注册插件,然后在我的Page_Init函数中按顺序调用它们之后,可以挂接到不同的页面事件(Load,PreRender等)。可能创建一个自定义的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中,但我想创建它们。我在谷歌上找不到关于这些东西的东西。是否可以创建一个自定义的?
我的想法是,一旦他们“注册”了这些指令,我就可以遍历所有这些指令(存储在数组中,每次指令被击中或存储在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。再次被全明星带走的赏金(LOL)。好问题和一个很好的答案。 –