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

时间:2012-03-15 13:39:30

标签: c# asp.net

我多年来一直使用PHP来构建网站。通常情况下,我会使用包含来引入,例如导航菜单:

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

对于ASP.NET(C#),我更像是一个新手。我想知道在ASP.NET中使用相同的PHP包含的正确(且最有效)方法是什么?

6 个答案:

答案 0 :(得分:8)

根据您的示例,PHP的最类似的ASP.NET构造可能包括creating and referencing a user control。这允许您预定义标记以及ASCX文件中的任何服务器端功能,您可以将其用于页面。

您也可以use a master page,如下所述,它会刷新您的基本布局,并允许您定义内容占位符,其他页面可以实现并填写内容。母版页是一种流行的方法,用于定义在所有页面中保持一致的页面元素,例如导航(也包括页眉,页脚,常用脚本,CSS等)。

答案 1 :(得分:4)

实现此目的的一种方法是使用Master Pages

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

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

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

答案 2 :(得分:1)

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

看一下这篇文章:http://www.mikesdotnetting.com/Article/144/Classic-ASP-Include-Files-in-ASP.NET

答案 3 :(得分:1)

如果您想引用和使用控件。

<%@ Register Src="includes/Nav.ascx" TagPrefix="uc" TagName="Nav" %>

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

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

如果要引用要在代码块<% code here %>

中使用的命名空间
<%@ Import Namespace="Includes.Nav" %>

答案 4 :(得分:0)

您并不是真的以这种方式将代码包含在文本中。 ASP.NET在类和程序集上运行。取决于您构建asp的方式以及您尝试执行的操作。您可以添加对dll的引用或将该类放在特殊类文件夹中。如果您尝试共享布局,则使用母版页是常见的。

答案 5 :(得分:0)

免责声明:我没有使用PHP的经验,而且我根据我的知识做了一些假设。

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

using ParentNamespace.ChildNamespace;

这允许您在ChildNamespace中使用类,而无需键入ParentNamespace.ChildNamespace.SomeClass类的全名。请记住,在执行此操作之前,必须在项目的引用中添加对程序集(通常是DLL文件)的引用(通过Visual Studio中的References类型文件夹进行管理)。单个程序集可以有多个名称空间和类,默认情况下会在标准项目模板中添加一些程序集。

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

<%@ Register src="~/Folder/Subfolder/MyControl.ascx" tagname="MyCustomControlName" tagprefix="myCustomPrefix" %>

然后在您想要控制的地方,您可以像这样使用它:

<myCustomPrefix:MyCustomControlName ID="myControl" runat="server" />

在ASP.NET MVC中,您可以使用代码块引用名称空间(语法取决于您正在使用的视图引擎,但它是使用的东西),您可以通过调用Html.RenderPartial方法重用其他视图:

Html.RenderPartial("MyCustomView");

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