在jsp和php中,拥有HTML / Java / PHP代码片段并且有其他jsp / php文件消耗它们是很常见的。这是可重用性的基础。
在asp中,M $创建了另一种方法,即母版页。但是我很难习惯它,被迫在一个独特的文件中拥有所有可重复使用的代码。例如,一些具有许多页面的应用程序可能具有面包屑区域,而更简单的应用程序则不需要它。
是的我可以将这些块放在ContentPlaceHolder中,只需将它们添加到不需要的asp页面中。但我宁愿将它们放在自己的文件中,并在需要时包含它们,而不是"删除"他们在不需要的时候。
另一个例子是菜单。每个应用程序都有自己的菜单。在jsp和PHP中,我可以使用HTML菜单创建一个本地文件并添加它。在asp中,我能想象到的最好的是拥有"主站的主页"使用示例菜单代码,然后有一个本地"嵌套的母版页"只有使用本地应用程序的菜单,并且asp文件会使用"嵌套的母版页"。
这是做这些东西的唯一方法吗?或者有更好的方法吗?
答案 0 :(得分:1)
ASP.NET网络表单有很多选择。
如果您只需要共享服务器代码(例如实用程序功能),则可以向Web项目添加其他类,并像其他任何代码一样实例化/调用它们。所有页面都可以访问以这种方式添加的类。
如果要跨多个项目共享服务器端代码,可以创建“类库”类型的新项目,对其进行编译,并从所有Web项目中设置对生成的DLL的引用。
如果您有跨页面通用的网页摘要或部分(例如菜单系统),则可以使用two choices:自定义控件或用户控件。
自定义控件:这些是使用代码从头开始编写的控件。从本质上讲,你编写了一个扩展Control(直接或间接)的类,你可以处理所有事情。您需要编写逻辑来创建要使用的子控件,并重写Render方法以执行呈现。通常,您将此控件构建为可再发行的程序集(即DLL),然后可以由任何ASP.NET应用程序使用,只需将程序集放在应用程序的“bin”目录中(或在全局程序集缓存中)
用户控件:这些控件是使用ascx文件编写的,看起来很像aspx页面。即,您只需将要使用的UI元素拖放到设计图面中即可。您不必担心控件创建,也不需要重写Render方法。
听起来像你想在这种情况下使用用户控件。这是一个有用的walkthrough,可以帮助您入门。
我将回应scheien的观点并告诉你,你可能想要仔细研究MVC,这是完全不同的,但可能更适合你的PHP心态。