【问题标题】:ASP.NET equivalent of server side includes相当于服务器端的 ASP.NET 包括
【发布时间】:2010-10-28 00:58:00
【问题描述】:

虽然服务器端的经典 ASP 方法包括在 ASP.NET 中的工作,但我觉得它不是首选方法。我“应该”如何达到同样的效果?

这就是我目前的做法:
<!-- #include file ="functionlib.aspx" -->

【问题讨论】:

标签: asp.net include


【解决方案1】:

您现在有许多提供这种效果的选项,但方式不同。

  • 用户控件 (.ascx)
  • 母版页 (.master)
  • 服务器端控件 (.dll)
  • 类库 (.dll)
  • App_Code 类 (.cs/.vb)

每个都用于不同的目的以实现不同的目标。这取决于你真正想要做什么。鉴于您的包含文件的名称,我想您正在尝试包含将在您的页面上下文中使用的库函数。

因此,您将编写一个包含方法的类库并将它们导入您的应用程序/aspx。

如果您正在寻找一个页面模板,该页面将完成大部分布局工作以提供不同内容的主体,那么您会对母版页感兴趣。

如果您正在寻找可以在许多页面中使用的模板控件,那么您将会关注用户控件。

如果您正在研究可供许多用户在许多项目中使用的模板控件,那么您将会看到服务器端控件。

如果您正在查看类/方法库,那么您将开发一个类库或使用一个 app_code 类,该类可以在第一次调用时进行 JIT 编译。这可以被认为更像是经典的 ASP,但实际上它的功能更像是作为一个单元的类库中的一个类。您可以在您的代码隐藏中或在您的 aspx/ascx 代码中的 标记中调用它,而无需引用类库。

我们实际上不再使用“包含”本身,但您工具包中的这些工具中的每一个都允许您为不同的场景提供类似的概念。作为开发人员,您将以不同的方式与网页的整个页面生命周期进行交互。 ASP.NET 是与经典 ASP 截然不同的野兽。它确实需要不同的观点/方法,并且需要一定的耐心才能找出差异。

【讨论】:

  • 不要忘记 App_Code 类——它比类库更接近经典的 ASP 模型。
【解决方案2】:

<% Response.WriteFile("myFile.aspx"); %>怎么样?

见:https://support.microsoft.com/en-us/help/306575/how-to-dynamically-include-files-in-asp-net

【讨论】:

  • 简单有效。我喜欢:)。
  • 澄清一下,即使包含的文件以.aspx结尾,它也不会被asp.net引擎处理
【解决方案3】:

如果您使用的是 ASP.NET MVC,那么 Html.RenderPartial 就是您的朋友。

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial.aspx

局部视图可以实现为 .ascx 或 .aspx,将上述调用放在您的“主”页面中基本上是说“从该局部视图获取输出并在此处呈现”。

Parial 视图可以使用您的主视图从控制器接收到的 ViewData。

【讨论】:

  • 仅当您使用 ASP.NET MVC 时。
  • 呃.....是的。出于某种原因,当它显然不存在时,我在问题中阅读了“MVC”。人们还在做老式的 ASP.NET 吗??? ;-)
  • 大声笑@马丁...呃,是的。 MVC 只是一种时尚,每个人都将在下周停止使用。让宗教战争开始吧;)
  • Martin,肯定有人在使用经典的 ASP.NET。 MVC 的边缘仍然很粗糙。不是每个人都想回到将内联 C# 嵌入到 aspx 页面中。我们中的一些人喜欢代码隐藏和声明式控件。 ;-)
  • 是的 - ASP.NET MVC 虽然不是“时尚”,但绝对不适合所有人。如果您在服务器控件等方面进行了投资,那么 ASP.NET “经典” FTW!不过对我来说,更接近金属更好,MVC 框架更干净。 YMMV。以后我会尽量不要在阅读时将文本“MVC”插入问题中:-)
【解决方案4】:

听起来你需要看的是MasterPages 的整个概念。

除非您只关注导入函数和其他实用程序(而不是 html 内容)。如果是这种情况(并且您使用的是代码隐藏模型),您应该能够使用 .vb 页面顶部的导入命令包含适当的文件或命名空间(针对 C# 进行相应调整)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多