首先,我是使用.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中以已发布的方式正常工作?
谢谢
答案 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"/>
这是一个快速版本。链接的文档更加彻底。