Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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中包含外部文件中的代码的正确方法是什么?_C#_Asp.net - Fatal编程技术网

C# 在ASP.NET中包含外部文件中的代码的正确方法是什么?

C# 在ASP.NET中包含外部文件中的代码的正确方法是什么?,c#,asp.net,C#,Asp.net,我已经用PHP建立网站很多年了。通常,我会使用include来引入导航菜单: <?php include 'includes/nav.php'; ?> 谈到ASP.NET(C#),我更像是一个新手。我想知道,在ASP.NET中,什么是正确的(也是最有效的)实现PHP包含的方法?根据您的示例,与PHP包含最相似的ASP.NET结构可能是。这允许您在ASCX文件中预定义标记以及任何服务器端功能,您可以在页面中使用这些功能 <uc:Nav ID="navMenu" runat=

我已经用PHP建立网站很多年了。通常,我会使用include来引入导航菜单:

<?php include 'includes/nav.php'; ?>


谈到ASP.NET(C#),我更像是一个新手。我想知道,在ASP.NET中,什么是正确的(也是最有效的)实现PHP包含的方法?

根据您的示例,与PHP包含最相似的ASP.NET结构可能是。这允许您在ASCX文件中预定义标记以及任何服务器端功能,您可以在页面中使用这些功能

<uc:Nav ID="navMenu" runat="server" />

正如下面有人所说,您还可以刷新基本布局并定义内容占位符,其他页面可以实现和填充内容。母版页是一种流行的定义页面元素的方法,这些元素在所有页面上都是一致的,比如nav(也包括页眉、页脚、常用脚本、CSS等)。

这取决于包含文件所扮演的角色。可重用的内容可以作为用户控件创建,也可以作为母版页的一部分


看看这篇文章:

您实际上并没有以这种方式将代码作为文本包含。ASP.NET对类和程序集进行操作。这取决于您构建asp的方式和尝试执行的操作。您可以添加对dll的引用,也可以将该类放到“特殊类”文件夹中。如果您试图共享布局,则使用母版页是常见的

实现这一点的一种方法是使用

您可以在这些布局上定义布局和“接点”

另一种方法是使用。将标记放在单独的文件(*.ascx)中,然后在页面或母版页中引用它(这更像是包含)


以最礼貌的方式,我建议您阅读一本关于ASP.Net的书。

免责声明:我没有PHP方面的经验,我正在根据我所知道的做一些假设

在常规C#文件(包括ASP.NET Web Forms代码隐藏文件或ASP.NET MVC控制器)中,有一个using语句导入命名空间。看起来是这样的:

using ParentNamespace.ChildNamespace;
<%@ Register src="~/Folder/Subfolder/MyControl.ascx" tagname="MyCustomControlName" tagprefix="myCustomPrefix" %>
<myCustomPrefix:MyCustomControlName ID="myControl" runat="server" />
Html.RenderPartial("MyCustomView");
这允许您使用ChildNamespace中的类,而无需键入类ParentNamespace.ChildNamespace.SomeClass的全名。请记住,在执行此操作之前,必须在项目的引用中添加对程序集的引用(通常是DLL文件)(通过Visual Studio中的引用类文件夹进行管理)。一个程序集可以有多个名称空间和类,并且默认情况下在标准项目模板中添加了一些程序集

在ASP.NET Web窗体项目中,可以引用所称的。用户控件封装在视图+代码后面,非常像您的页面,非常容易重用。您引用页面顶部的控件(或控件),如下所示:

using ParentNamespace.ChildNamespace;
<%@ Register src="~/Folder/Subfolder/MyControl.ascx" tagname="MyCustomControlName" tagprefix="myCustomPrefix" %>
<myCustomPrefix:MyCustomControlName ID="myControl" runat="server" />
Html.RenderPartial("MyCustomView");

另一种获取页面周围反向引用的方法是。它们允许您为页面内容定义占位符。

如果要引用和使用控件

<%@ Register Src="includes/Nav.ascx" TagPrefix="uc" TagName="Nav" %>
<uc:Nav ID="navMenu" runat="server" />

您可以稍后在页面上添加控件

<uc:Nav ID="navMenu" runat="server" />

如果要引用要在代码块中使用的命名空间



我最常用的用法是在前面提到的导航菜单或页脚中,几乎在任何地方都会重复。使用母版页,它与所有内容页共享布局和功能。我在一个网站上使用过母版页,虽然它工作正常,但我主要是Dreamweaver用户,不像Visual Studio那样“吸吮“母版页,如果你在DW中打开一个有母版页的页面,你只会得到一个未格式化的页面,当你试图操作图形界面时很难处理。然后我会创建一个用户控件,它就是你的导航并使用它。”。我从未使用过dream weaver,所以我不知道它的功能是什么。另外,在VS中,非常复杂的母版页通常也无法在编辑器中查看,因此这总是有点痛苦。+1还请注意,您当然可以在母版页中嵌入用户控件,这样您就不必用大量的标记填充母版页。@dash,当然,这也是(我编辑了答案以指定此项)完全同意这本书,谢谢你提供的信息。我认为用户控制是我所想的。几年前,我曾在一个网站上使用过它们,但有一位比我更熟悉的人告诉我,这不是将内容“包括”到网站中的正确方式,但他没有详细说明。所以我认为我做错了。你的答案与现有答案重复,但我没有投反对票,因为你的答案是唯一显示语法的答案。我有一个坏习惯:我开始回答,然后分心,几分钟后才回来-(对重复项的否决引发了一种糟糕的做法,即在稍后输入一个简短的占位符答案并编辑其中的细节,以便成为第一个。我不在乎我是否会被否决,但为什么要惩罚那些花时间了解更多细节或测试他们发布的代码的人?所以你否决了我,因为我花时间编写了更完整的回答?我的答案中有一些部分与现有答案重复,但请指出答案中提到了如何在MVC或代码隐藏中进行操作?考虑到OP询问的是导航控制,您的答案中关于使用声明的部分不适用。考虑到他甚至没有提到MVC,这部分与此无关呃。剩下的是现有答案的副本。请编辑你的答案,这样我就可以删除否决票。我现在认为这些评论已经足够了。他也没有引用Web表单。为什么你认为他没有使用MVC?除非你编辑你的答案,否则我不会删除否决票。做一些琐碎的事情,我可以删除它。@JohnSaun如果您可以自己编辑它(格式化),我相信您可以在…之后撤消编辑。。