2

我对 ASP.NET 的经验很少,在开始编写我的第一个网站/应用程序之前我正在做一些自我培训,这将是一个校准实用程序。该实用程序如何工作现在不是我关心的问题。但是,该实用程序最终需要嵌入到其他人的网站中,或者只是作为带有我的代码的页面的 URL,或者嵌入(例如,作为 HTML 框架或 iframe)。为了弄清楚这方面的基础知识,我编写了两个非常简单的 ASP.NET 网站,一个包含框架集的“父级”,以及一个我试图放入其中一个框架的“子级”。

父级的“Default.aspx”HTML 代码基本上是这样的:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Parent Site Test 1</title>
</head>

<frameset cols="300,*">
    <frame name="outer" src="parent.aspx" noresize></frame>
    <frame name="inner" src="[what do I put here?]"</frame>
</frameset>

</html>

“parent.aspx”页面中只有最基本的 HTML:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        I am the parent web form.
    </div>
    </form>
</body>
</html>

出于本练习的目的,子网站(就像我现在拥有的那样)位于单独的 VS2008 解决方案中,因为我试图重现其他人的网站必须引用我的校准网页/站点/事物的条件. 我最初在想有办法将整个子框架打包成一个 DLL,然后有办法告诉父级使用该 DLL 作为子框架的源。这来自我在 Java 领域的经验 - 使用 JBoss 和 J2EE,这很容易解决,因为孩子将被部署为另一个 EAR 文件。

由于对 VS2008 和 ASP.NET 完全没有经验,过去几天我在 Google 上花了好几个小时试图找到答案,但无济于事。

  • 我想做的事情是合理的吗?这是思考解决问题的正确方法吗?

  • 我可以通过某种方式将孩子打包成一个单独的 DLL,将其部署为一个相当独立且自包含的网站(或 Web 应用程序......我仍然不清楚差异)吗?如果是,那么我如何在 VS2008 中从我的网站/应用程序实际创建此 DLL,然后如何在父网站中引用它?

  • 如果我在这里完全偏离轨道,我该如何以其他方式创建这个父/子组合?孩子(真的,我最终会编写的校准实用程序)确实需要在 ASP.NET(使用 C#)中,但我无法控制父站点,因为它是其他人的代码,他们只想成为能够放入我的实用程序。

谢谢您的帮助!你可以越具体越好。我对 ASP.NET 和 Visual Studio 非常陌生,尽管我确实有丰富的其他语言和 IDE 编程经验。

4

3 回答 3

1

如果您知道客户端也使用 ASP.Net,您可以将其构建为用户控件。

于 2009-07-16T16:00:33.513 回答
1

如果您有 IIS6 或更高版本,您可以运行这两个 Web 应用程序,并在您的 src="[what goes here]" 中放置子网站的本地 URL(可能是http://localhost/ChildTestWebsite/child.aspx) . 然后,当您加载http://localhost/ParentTestWebsite/Default.aspx时,您应该会看到框架。

要将其打包成单个 DLL,我相信您必须像 Joel 所说的那样使其成为一个用户控件,否则您将拥有 DLL + aspx 页面。

于 2009-07-16T16:15:37.913 回答
1

你应该做什么取决于父母和孩子之间的互动如何。

如果父级不打算访问子级上的任何服务器端功能,您只需在框架标签上的 src 中引用绝对 http 路径即可。如果您尝试访问 javascript 方法并且这 2 个应用程序位于不同的 Web 服务器上,您可能会在某些浏览器中遇到安全问题,但这不是 .NET 特定的。

如果父级要访问服务器端功能,则需要在父项目的某处提供服务器端组件。这更复杂。我认为您必须将所有子页面构建为包含在父 aspx 页面中的 Web 控件。

1:将子项目构建为可供父级使用的服务器控件的webcontrol库。这是关于部署的最佳方法。一切都内置在一个 dll 中。最大的缺点是服务器控件只能用代码开发。您没有视觉设计师可以帮助您。

2:创建一个Web应用程序项目。在 VS2008 中,您可以通过“新建项目”执行此操作,然后找到“ASP.NET Web 应用程序”模板。这意味着一个 Web 项目,其中所有代码(cs 文件中的所有内容)都构建到单个 dll 中。在这种情况下,您将创建可供父页面使用的用户控件(ascx 文件)。这样做的缺点是用户控件必须在 runnin web 应用程序上定位,因此您必须将所有 ascx 文件复制到父网站的部署位置。还必须将 dll 复制到父网站的 bin 文件夹中。在这里,您的优势是在 VisualStudio 中设计 GUI 要简单得多。为 ascx 用户控件设计 gui 和代码与创建完整的 aspx 网页非常相似。

于 2009-07-17T11:42:58.873 回答