通过ASP.NET中的App_Code共享过程访问MasterPage控件

时间:2014-05-23 16:15:33

标签: asp.net

背景:目前我在<div id="TransactionStatus" runat="server" class="StatusBarCSS">God is Great!</div>文件中有一个控件MasterPage.master来显示交易状态。状态使用函数(参见代码1 )从ChildPage1.aspx更新。如果以下代码保留在ChildPage中,情况就好了。

代码1

Private Sub PrinTransactionStatus(ByVal intMode As Integer, ByVal strMessage As String)

    Dim objStatus As HtmlGenericControl = DirectCast(Master.FindControl("TransactionStatus"), HtmlGenericControl)

    If objStatus Is Nothing Then
        ' do nothing
    Else
        ' if the mode is 0 which means Error
        If intMode = 0 Then
            objStatus.Visible = True
            objStatus.InnerHtml = "<b>Error: </b></span>" + strMessage.ToString()
            objStatus.Style.Add("border-color", "red")
            objStatus.Style.Add("background-color", "rgb(255, 242, 242)")
            objStatus.Style.Add("color", "#000;")
        ElseIf intMode = 1 Then
            objStatus.Visible = True
            objStatus.InnerHtml = "<b>Success: </b></span>" + strMessage.ToString()
            objStatus.Style.Add("border-color", "green")
            objStatus.Style.Add("background-color", "rgb(244, 255, 230)")
            objStatus.Style.Add("color", "#000;")
        End If
    End If
End Sub

需要专业知识:由于上面的代码将被许多页面使用,我将整个代码作为公共共享程序移动到App_Code文件夹,但现在代码不再起作用了。 系统显示错误,因为未声明Master

我在这里错过了什么或做错了什么..感谢

只需添加,<%@ MasterType VirtualPath="~/SubPagesMaster.master" %>

中已有ChildPage1.aspx

1 个答案:

答案 0 :(得分:1)

不要将它放在共享过程中,而是创建一个基本的网页类并将该方法放在那里。

Imports Microsoft.VisualBasic

Namespace MyNameSpace
  Public Class MyBaseWebPage
    Inherits System.Web.UI.Page

    Protected Sub PrinTransactionStatus(ByVal intMode As Integer, ByVal strMessage As String)

        Dim objStatus As HtmlGenericControl = DirectCast(Master.FindControl("TransactionStatus"), HtmlGenericControl)

        If objStatus Is Nothing Then
            ' do nothing
        Else
            ' if the mode is 0 which means Error
            If intMode = 0 Then
                objStatus.Visible = True
                objStatus.InnerHtml = "<b>Error: </b></span>" + strMessage.ToString()
                objStatus.Style.Add("border-color", "red")
                objStatus.Style.Add("background-color", "rgb(255, 242, 242)")
                objStatus.Style.Add("color", "#000;")
            ElseIf intMode = 1 Then
                objStatus.Visible = True
                objStatus.InnerHtml = "<b>Success: </b></span>" + strMessage.ToString()
                objStatus.Style.Add("border-color", "green")
                objStatus.Style.Add("background-color", "rgb(244, 255, 230)")
                objStatus.Style.Add("color", "#000;")
            End If
        End If
    End Sub
  End Class
End Namespace

在每个网页代码后面更改继承以引用此页面。然后,您可以从后面的代码中引用该方法。

Partial Class Default2
 Inherits MyNameSpace.MyBaseWebPage


 Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    Me.PrinTransactionStatus(1, "message")
 End Sub
End Class