我有masterpage.master.vb,我有属性,例如;
Private _SQLerror As String
Public Property SQLerror() As String
Get
Return _SQLerror
End Get
Set(ByVal value As String)
_SQLerror = String.Empty
End Set
End Property
然后我有一个aspx页面,我需要在其中使用此属性,例如;
If **[masterpage property sqlerror]** = Nothing Then
InternalSQLErrLabel.Text = ("No Errors Reported")
End If
有谁能告诉我如何解决这个问题?我尝试过搜索,但大多数文章都是在网页控件的背景下进行讨论......
感谢。
答案 0 :(得分:8)
你走了:
How to: Reference ASP.NET Master Page Content
从文章中看起来像
If Master.SQLerror = Nothing Then
InternalSQLErrLabel.Text = ("No Errors Reported")
End If
应该适合你。
请确保按照描述添加MasterType指令,否则可能会出现类型转换错误。 (或者您可以使用主页类型的变量而不是Master,就像daRoBBie在他的回答中所建议的那样。)
我已经创建了一个测试网站,只是为了测试它,它的工作原理。以下是网站的完整来源:
的 Site1.Master 强>:
<%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Site1.master.vb" Inherits="WebApplication1.Site1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
This is the Master Page content.
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
<强> Site1.Master.vb 强>:
Public Partial Class Site1
Inherits System.Web.UI.MasterPage
Private _SQLerror As String
Public Property SQLerror() As String
Get
Return _SQLerror
End Get
Set(ByVal value As String)
_SQLerror = String.Empty
End Set
End Property
End Class
<强> WebForm1.aspx的强>:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site1.Master"
CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %>
<%@ MasterType VirtualPath="~/Site1.Master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
This is the Content Page content.
<asp:Label ID="InternalSQLErrLabel" runat="server" Text="Label"></asp:Label>
</asp:Content>
<强> WebForm1.aspx.vb 强>:
Public Partial Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Master.SQLerror = Nothing Then
InternalSQLErrLabel.Text = ("No Errors Reported")
End If
End Sub
End Class
答案 1 :(得分:3)
您可以将母版页转换为正确的类型:
MyMasterPageType m = (MyMasterPageType)Master;
然后您可以访问您的属性:
m.SqlError
如果您有多个母版页,请让所有母版页从界面继承,并将母版页强制转换为该界面。
答案 2 :(得分:1)
您可以使用&lt;%@ MasterType%&gt;也是为了这个。
答案 3 :(得分:0)
如果您已按照Andy West的回答中的步骤操作并且有一个或多个编译错误,请阅读Foo is not a member of 'System.Web.UI.MasterPage'
,请确保它们是列表中唯一的编译错误。如果还有其他需要修复的编译错误,则应在修复MasterPage
之前修复它们。
这些其他编译错误可能会阻止编译器解析您的MasterPage
并检测其他属性。解决后,请进行完整的重新编译。