Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将asp代码添加到另一个asp_Asp.net_Visual Studio_Master Pages_Reusability - Fatal编程技术网

Asp.net 将asp代码添加到另一个asp

Asp.net 将asp代码添加到另一个asp,asp.net,visual-studio,master-pages,reusability,Asp.net,Visual Studio,Master Pages,Reusability,在jsp和php中,通常会有包含HTML/Java/php代码片段的文件,并让其他jsp/php文件使用它们。这是可重用性的基础 在asp中,M$创建了另一种方法,母版页。但我很难适应它,被迫将所有可重用代码放在一个唯一的文件中。例如,一些具有许多页面的应用程序可能有一个面包屑区域,而简单的应用程序则不需要它 是的,我可以将这些块放在ContentPlaceHolder中,然后将它们空添加到不需要的asp页面中。但我宁愿将它们放在自己的文件中,并在需要时包含它们,而不是在不需要时“删除”它们 另

在jsp和php中,通常会有包含HTML/Java/php代码片段的文件,并让其他jsp/php文件使用它们。这是可重用性的基础

在asp中,M$创建了另一种方法,母版页。但我很难适应它,被迫将所有可重用代码放在一个唯一的文件中。例如,一些具有许多页面的应用程序可能有一个面包屑区域,而简单的应用程序则不需要它

是的,我可以将这些块放在ContentPlaceHolder中,然后将它们空添加到不需要的asp页面中。但我宁愿将它们放在自己的文件中,并在需要时包含它们,而不是在不需要时“删除”它们

另一个例子是关于菜单。每个应用程序都有自己的菜单。在jsp和PHP中,我可以使用HTML菜单创建一个本地文件并添加它。在asp中,我能想象到的最好的方法是使用带有示例菜单代码的“母版页”,然后使用带有本地应用程序菜单的本地“嵌套母版页”,并让asp文件使用该“嵌套母版页”


这是做这些事情的唯一方法吗?或者有更好的方法吗?

使用ASP.NET web表单有很多选择

如果您只需要共享服务器代码,例如实用程序函数,您可以向web项目中添加其他类,并像其他代码一样实例化/调用它们。以这种方式添加的类对所有页面都是可访问的

如果要在多个项目之间共享服务器端代码,可以创建“类库”类型的新项目,对其进行编译,并设置对所有web项目生成的DLL的引用

如果有跨页面通用的页面片段或部分(例如菜单系统),则有:自定义控件或用户控件

自定义控件:这些控件是专门使用代码从头开始编写的控件。从本质上讲,您编写了一个扩展控制(直接或间接)的类,并负责所有事情。您需要编写逻辑来创建要使用的子控件,并重写Render方法以执行渲染。通常,将此控件构建到可再发行程序集(即DLL)中,然后任何ASP.NET应用程序都可以使用该程序集,只需将该程序集放置在应用程序的“bin”目录中(或全局程序集缓存中)

用户控件:这些控件是使用ascx文件编写的,该文件看起来很像aspx页面。i、 e.您可以简单地将要使用的UI元素拖放到设计图面中。您不需要担心控件的创建,也不需要担心重写Render方法

在我看来,在这个场景中您需要一个用户控件。以下是一个有助于您开始学习的方法


我将回应scheien的观点,并告诉您,您可能希望仔细研究MVC,它完全不同,但可能更适合您的PHP思维方式。

您是否看到了这一点:您可以使用用户控件母版页或嵌套母版页没有任何问题。您需要的是可恢复的组件,这将是一个UserControl,在需要时包含在aspx(webform)文件中。如果需要,您甚至可以在彼此之间嵌套UserControls。如果要开始一个新项目,那么就选择MVC。稍后你会感谢你自己的。谢谢。我将阅读链接和关于用户控件的内容。我不想使用框架,我从不需要Zend、CakePHP、Struts等框架。这是一个语言/平台问题,不是缺少框架。你正在使用框架。您正在使用Web表单。您可以像scheien所描述的那样使用MVC,这可能会导致更干净的实现。即使您选择不使用它,您也应该了解它是什么,因为它将成为ASP.NET的前进方向。非常有趣,谢谢!我要读这本随笔。也许以后我会花一些时间来研究MVC,但是需要一个框架来完成世界上其他地方用basic语言可以轻松完成的简单工作似乎有些奇怪。Web表单和MVC都是“框架”。使用Web表单,可以将控件拖放到设计器上,并且控件在运行时发出HTML。使用MVC,实际上您自己编写HTML,并在运行时从后端插入数据。它对过程的干扰要小得多,而且,在我看来,更像PHP.hmm有趣的是,我要看看MVC,我只需要时间来做。如果MVC提供了更多使用HTML的自由,那可能会更好。但是,为什么不在它的内部使用
和echo DTO属性呢?您可以在您的aspx页面上使用特定的属性——在控件之间。在控件中渲染东西要困难得多,而控件通常是您想要渲染的地方。您仅限于控件提供的扩展点,例如,您可以使用DataSource和DataBind。如果需要更深入的自定义,则必须覆盖OnPreRender,这可能是一个真正的难题。MVC让它变得更简单。我不使用listview、label等控件。我讨厌asp创建愚蠢的无效html(包括用于布局的表格!!!!),更讨厌它创建损坏的JavaScript并用无用的请求淹没web服务器(VisualStudio喜欢在jquery文件上报告错误!!!!!)。它完全是垃圾,我不是一个笨蛋,我可以轻松处理HTML、JavaScrit和HTTP请求,而且它比这些懒惰的专有组件更有效率。我要做的是创建自定义用户控件,所有这些控件都是用优雅干净的HTML创建的。