Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.NET中包含文件中无法识别asp的原因_C#_Html_Asp.net - Fatal编程技术网

C# asp.NET中包含文件中无法识别asp的原因

C# asp.NET中包含文件中无法识别asp的原因,c#,html,asp.net,C#,Html,Asp.net,我有一个about.aspx页面,它调用一个include文件,因为我想在我的其他aspx页面中重复使用该文件,如下所示: <!-- #include virtual ="includeNav/radHours.inc" --> 为什么会出现错误以及如何解决它?创建一个UserControl,然后在about.aspx页面中引用它 在Visual Studio中,右键单击项目或其中的子文件夹,然后指向“添加”并选择“新建项…” 然后在“添加新项”对话框中选择“Web”,然后单击“W

我有一个about.aspx页面,它调用一个include文件,因为我想在我的其他aspx页面中重复使用该文件,如下所示:

<!-- #include virtual ="includeNav/radHours.inc" -->

为什么会出现错误以及如何解决它?

创建一个UserControl,然后在about.aspx页面中引用它

在Visual Studio中,右键单击项目或其中的子文件夹,然后指向“添加”并选择“新建项…”

然后在“添加新项”对话框中选择“Web”,然后单击“Web窗体用户控件”,它可能只是说“用户控件”。命名为RadHours.ascx

然后将SSI服务器端包含的代码粘贴到用户控件中。请注意,Inherits属性使用命名空间WebApplication1。您需要更改它,使其与您的命名空间方案匹配。这是为了说明的目的

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RadHours.ascx.cs" Inherits="WebApplication1.RadHours" %>

<asp:Label id="lhWP" runat="server" text="White Plains" />
<div id="dvWP" runat="server" style="width: 100%; text-align: center; padding-top: 10px;"></div>
最后,将使用的include指令替换为:

<uc:RadHours ID="radHours" runat="server" />

不要使用包含文件。现在我们有了,这给了我们这种功能。我怀疑ASP.NET引擎是否能正确解析包含文件,因此原始内容会发送到客户端,而不是生成的HTML。我已经有一个母版页,并且在母版页内为每个子页使用一行:而我的about.aspx页就是全部功能内容。在about.aspx中,如何调用另一个页面?我提供的链接解释了所有这些。试试看。如果您有特定的问题,请随时将其发布到SO。顺便说一句,我建议使用术语ASP.NET而不是ASP来帮助区分此技术与经典ASP。@MarioJVargas谢谢。我刚刚编辑了它。太棒了!从外观上看,UserControl似乎也可以有标准的HTML标记,添加runat=server也可以像其他aspx控件一样被后面的代码访问?如果我错了,请纠正我。应该注意的是,您可以在web.config文件中注册控件,这样您就不必在要使用它们的每个页面上手动注册它们。如果您不止一次地使用该控件,这将非常有用,这正是使其成为控件的关键所在@SiKni8是的,您可以将UserControls视为可重用的标记/代码片段。可以在页面上执行的任何操作都可以在UserControl上执行。因此,您可以通过将runat=server添加到服务器上,使您的常规HTML控件在服务器上可访问。如果我在web.config?@SiKni8中注册它,我可以在每个需要使用它的页面中避免这一行,是的,您可以从引用页面的代码后面访问用户控件。像对待任何封装类一样对待它们。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RadHours.ascx.cs" Inherits="WebApplication1.RadHours" %>

<asp:Label id="lhWP" runat="server" text="White Plains" />
<div id="dvWP" runat="server" style="width: 100%; text-align: center; padding-top: 10px;"></div>
<%@ Register tagPrefix="uc" tagName="RadHours" src="RadHours.ascx" %>
<uc:RadHours ID="radHours" runat="server" />