【问题记录】Asp.net WebApplication和WebSite中用户控件的使用区别
今天想模仿一下BlogEngine.net(网站部分是WebSite)中的Widget实现方式,于是新建了一个WebApplication项目,按照BE中的做法,有一个WidgetZone的容器来放所有的用户控件的。这个WidgetZone继承于PlaceHolder。BE最后是这么使用WidgetZone的:
1 | <blog:WidgetZone ID= "WidgetZone1" runat= "server" ZoneName= "be_WIDGET_ZONE" /> |
然后再web.config下面增加
1 2 3 4 5 6 7 8 9 10 | < pages enableSessionState="false" enableViewStateMac="true" enableEventValidation="true"> < controls > < add namespace="App_Code.Controls" tagPrefix="blog"/> < add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </ controls > < namespaces > < add namespace="BlogEngine.Core" /> </ namespaces > </ pages > |
也就是声明一个那个blog标签。
我也模仿着BE在App_Code(application项目默认是没有App_code目录的,我手动新建的,感觉这个操作就已经不规范了)新建一个WidgetZone并继承PlaceHolder,然后在网页中引用这个widgetzone最终运行页面时出现了错误,说什么“Unknown server tag 'blog:WidgetZone'.”。我就郁闷了,命名已经在该页面声明了blog这个标签,他就是说找不到。
找了好长时间,找Application与WebSite项目的区别:http://www.cnblogs.com/charles2008/archive/2008/06/27/1222819.html,网上对这两个东西也有过讨论。自己总结一下就是:
1. website项目可以在运行时对代码进行更改,并即时看到效果。而Application需要重新编译。
2. application更利于大型项目的管理,他声称的编译文件容易管理,而website的编译文件名是随机声称的。
3 .就应该是我这次遇到的这个问题了,website可以直接在页面中使用继承了usercontrol的类,而application只能使用带有ascx后缀的,不可以直接使用类。此外,他们在页面顶部声明标签的形式也不一样:
website:
1 | <%@ Register namespace = "App_Code.Controls" tagPrefix= "blog" %> |
这样只要是app_code文件夹下面继承了usercontrol的类都可以在下面直接引用。
web Application
1 | <%@ Register TagPrefix= "blog" Src= "~/WidgetZone.ascx" TagName= "zone" %> |
只能一次指定一个文件,如果像上面那样引用会报错,说找不到这个标签的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器