可重复使用的asp.net网页

时间:2009-11-09 07:26:40

标签: c# asp.net

我想构建一个可重复使用的asp.net发票模块。这意味着我想从几个网站使用这个模块。此发票模块将是独立的,并且将拥有自己的业务层,并具有自己的业务逻辑。

我的问题:如何通过asp.net实现这一目标。实现此发票模块的网站应负责主题等。那么有可能有一个可重复使用的asp.net页面,比如一个dll或单独的项目,它继承了实现这个模块的网站的主题吗?

任何想法都将不胜感激

4 个答案:

答案 0 :(得分:1)

您可以实现一个Web服务来创建操作并返回干净的HTML,然后在最后一页中对其进行主题化。

答案 1 :(得分:0)

您可以在自己的dll中拥有UserControl,然后在需要它的每个网站中引用该dll。您需要在包含UserControl的每个网站上创建一个页面,但这是标准操作过程。我对ASP.NET中的主题或皮肤没有太多经验,但是如果需要,可以向UserControl添加属性,这些属性将映射到内部ASP.NET控件以允许主题工作。

答案 2 :(得分:0)

您可以在HttpHandler中实现该功能:部署是在web.config中复制dll和一些更改的简单方法。

然而,使用HttpHandlers意味着很多手写HTML可能有点令人生畏,特别是考虑到你的项目相当复杂。

MSDN上的

HTTP Handlers and HTTP Modules Overview。这里有很多关于SO和Google的其他信息。

答案 3 :(得分:0)

您可以将Invoice Module项目代码放入UserControls,您的站点将其引用为DLL。这并不理想,因为它要求您创建“容器页面”,将主题应用于整个发票模块项目的UserControls。

要解决此问题,您可以创建一个单独的“发票模块”Web项目,该项目位于其自己的目录中。然后,每个网站都有一个指向发票模块的虚拟目录。

发票模块页面的主页面将在父Web应用程序中实现,以完成特定于站点的主题。

虚拟目录示例

假设您有两个使用发票模块的网站,名为“Site1”和“Site2”。他们可以驻留在这些目录中:

  • C:\网站\站点1
  • C:\网站\站点2

在IIS中,您将每个站点设置为名为“InvoiceModule”的虚拟目录,指向:

  • C:\网站\ InvoiceModuleContainer \ InvoiceModule

在每个发票模块ASPX页面中,他们都会有一个类似于以下内容的页面声明:

<%@ Page Language="C#" MasterPageFile="~/InvoiceModuleMaster.master"
         AutoEventWireup="true" Title="Untitled Page"  %>

(注意MasterPageFile路径中VirtualPath的用法。)InvoiceModuleMaster.master文件将驻留在以下目录中:

  • C:\网站\站点1 \ InvoiceModuleMaster.master
  • C:\网站\站点2 \ InvoiceModuleMaster.master
  • C:\ Websites \ InvoiceModuleContainer \ InvoiceModuleMaster.master(未使用,只是为了允许InvoiceModule项目进行编译。)

因此,每个站点只需添加一个主页面文件即可获得特定于站点的“主题”。并且不需要复制整个发票模块。