我正在爲我在工作中開發的一些網站設計一些高級定製框架,並且正在爲它實現一個小插件系統。例如,我想在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)。好問題和一個很好的答案。 –