使用其他aspx文件中定义的变量或类

时间:2016-04-28 17:35:23

标签: asp.net vb.net

首先,我是使用.NET的noob。

我在IIS中有一个功能已发布的.NET网站,但我没有源代码。 由于我必须在aspx页面中做一些更改,我想创建一个vs项目。

我创建了visual studio 2010项目,并将所有内容复制并粘贴到我的新项目中(我不知道这一步是否正确以及我是否需要做更多的事情)但是我有很多错误引用。 例如:

文件:secure / abc / main.aspx

SSH

文件:secure / abc / Config.aspx

<% @Page Language="VB" Explicit="True" Debug="False" %>
<%@ Import Namespace="System.IO" %>
<!--#include virtual="Config.aspx" -->
<!--#include virtual="Render.aspx" -->

<script language="vb" runat="server">
    Sub Page_Load(sender As Object, e As EventArgs)
        Render(sender, e)
    End Sub
</script>
<html><head></head><body>
    blah blah blah...
    <asp:Literal ID="TemplateHeader" runat="server"></asp:Literal> 
    blah blah blah...
</body></html>

文件:secure / abc / Render.aspx

<script language="vb" runat="server">
    Public Class InitiatePage
        Public Shared Function GetHeader(sender As Object, e As EventArgs, RequestPath As String)
         blah blah blah
        ...

在这种情况下,错误在Render.aspx:

  

未声明'TemplateHeader'。由于它可能无法访问   保护水平。

     

'InitiatePage'未声明。由于它可能无法访问   保护水平。

如何重新报告此引用错误?

我是否需要在Render.aspx中包含引用?如果是,为什么在IIS中以已发布的方式正常工作?

谢谢

1 个答案:

答案 0 :(得分:1)

当你以另一种方式包含一个文件时

<!--#include virtual="Config.aspx" -->

所有这一切导致页面将该文件的内容呈现为响应的一部分,但它不处理该文件服务器端的内容(除了读取它并将其呈现给输出之外)。所以如果您在该包含文件中有服务器控件,您无法引用它们。从服务器代码的角度来看,这些控件不存在。

如果您想创建一个在多个页面中重复使用的部分页面,那么使用user control的方法就是这样。

  

用户控件是一种复合控件,其工作方式非常类似   ASP.NET网页 - 您可以添加现有的Web服务器控件和标记   到用户控件,并定义控件的属性和方法。   然后,您可以将它们嵌入到ASP.NET网页中,在那里它们充当   单元。

在您的项目中,添加 - &gt;新商品 - &gt; Web窗体用户控件。那将创建一个.ascx文件。您可以像控制.aspx页面一样向该控件添加控件和内容。

然后在要显示该用户控件的页面上,在页面指令后添加以下内容:

<% @Page Language="VB" Explicit="True" Debug="False" %>
<%@ Register TagPrefix="uc" TagName="YourControl" Src="YourControl.ascx" %>

TagPrefix只是您选择的前缀。 TagName是您要在页面上用于此类控件的名称。 (通常我们只使用控件的名称。)Src是.ascx文件的路径和文件名。

然后,无论您想将控件添加到页面,请插入

<uc:YourControl id="SomeIdThatYouAssign" runat="server"/>

这是一个快速版本。链接的文档更加彻底。