以编程方式引用其他页面

时间:2014-08-28 12:05:09

标签: c# asp.net webforms

注意:出于这个问题的目的,我正在使用" 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,我做错了什么?

1 个答案:

答案 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;