注意:出于这个问题的目的,我正在使用" Asp.Net网页和Master Page"在MS Visual Studio 2013中构建的模板。
我的母版页包含一个指定任何异常错误的标签。必须在母版页中定义它以了解定位原因。
默认网页(Default.aspx.cs)从类中获取错误消息,该类在页面中定义。
我的处理程序类文件产生如下错误消息:
public string errorString...
...catch (Exception e)
{
errorString = e.Message.ToString();
}
然后Default.aspx.cs实例化处理程序和字符串,如下所示:
Program.invoiceHandler handler = new invoiceHandler();
string errorString
{get; set;}
并从其中一个类中填充字符串:
errorString = handler.errorString;
因此,理想情况下,Site.Master.cs应该能够通过查看默认网页来填充错误字符串:
errorLabel.Text = _Default.errorString;
这不起作用。当我输入_Default
时,Intellisense给了我三个选项:
CreateHTMLTextWriterFromType
Equals
ReferenceEquals
如何从Site.Master.cs访问Default.aspx.cs,我做错了什么?
答案 0 :(得分:2)
以下是我所谈论的一个例子。我直接复制了我的一个项目的代码而不是c#。这是vbnet,很抱歉给您带来不便。
在Site.Master.cs中添加以下代码:
Public ReadOnly Property getErrorLabel() As [label_type]
Get
Return Me.[label]
End Get
End Property
然后在Default.aspx.cs中,在设置" errorString"之后,您可以使用此代码在MasterPage中设置标签的文本
Ctype(Master, [MasterType]).getErrorLabel().Text = errorString
显然,您必须更改[label_type],[label]和[MasterType]以获取正确的值。
另一个解决方案是在Default.aspx.cs中使用这段代码(也在vbnet中,对不起:D)
Page.Master.FindControl("label_id").Text = errorString
这是C#中相应的代码(尽我所能翻译):
Site.Master.cs:
public Label getErrorLabel
{
get { return this.errorLabel; }
}
Default.aspx.cs:
((SiteMaster)Master).getErrorLabel.Text = errorString;