【发布时间】:2020-03-12 16:59:10
【问题描述】:
希望有人能提出一种在网站应用程序的页面之间共享网络表单代码的更好方法。使用一个非常基本的示例来解释,假设我有两个名为“Page1.aspx”和“Page2.aspx”的网页,它们都有分别名为“Page1.aspx.vb”和“Page2.aspx.vb”的页面背后的代码。
两个页面都有一个执行相同操作的简单按钮对象。通常,您只需在两个页面的代码中添加点击事件,但我想做的是让它在共享的公共类中放置一次。
两个页面的 HTML:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Page1.aspx.vb" Inherits="Page1" %>
<html>
<head runat="server"></head>
<body>
<form id="Form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Page2.aspx.vb" Inherits="Page2" %>
<html>
<head runat="server"></head>
<body>
<form id="Form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>
代码:
Partial Class Page1
Inherits System.Web.UI.Page
'I don't want to put the button click event here. How do I reference it from below?
End Class
Partial Class Page2
Inherits System.Web.UI.Page
'I don't want to put the button click event here. How do I reference it from below?
End Class
Public Class SharedCode
Inherits System.Web.UI.Page
'I want to put the button click event here.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Response.Write("hello")
End Sub
End Class
请注意,按钮和按钮的代码完全相同。能够将代码保存在一个地方会很好,这样您就不必一遍又一遍地重复代码以及单独管理它。尤其是在页面很多的情况下。
我使用的一种有效的方法是只在两个页面共享的页面后面使用一个代码:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="SharedCode.vb" Inherits="SharedCode" %>
上面,对于“Page1.aspx”和“Page2.aspx”,我没有使用不同的/特定的“CodeFile”和“Inherits”值,而是使用相同的页面代码。然后,对于特定于这些页面的代码,我在每个页面中添加内联 <script runat="server"> 标记。
同样,这种方法有效,但有更好的方法吗?
【问题讨论】:
标签: asp.net vb.net webforms visual-studio-2017