ASP.NET 2.0中aspx的模板功能?

xiaocai0001 2007-05-29 11:25:13
问题是这样的:

现在我需要做一系列网页ViewPageA.aspx, ViewPageB.aspx ...
这一系列网页中呈现的内容形式绝大多数一样.只有细微差别.

如在同一位置的DropDownList的内容不一样.
虽然页面形式是一样的, 但后台数据源不同, 因此又希望后台代码可以根据各个页面特别定制.

尝试了用MasterPage, 但由于MasterPage里的不能决定所有的内容, 没法写统一的响应事件.

求助各位高手有无好的解决方案?
...全文
364 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
pc1024 2007-06-26
  • 打赏
  • 举报
回复
学习ing
xiaocai0001 2007-05-29
  • 打赏
  • 举报
回复
页面好像有点错误 ....
sibyle 2007-05-29
  • 打赏
  • 举报
回复
用2.0的样式啊 App_Themes  可以单独定义
xiaocai0001 2007-05-29
  • 打赏
  • 举报
回复
感谢两位
  • 打赏
  • 举报
回复
毫无疑问,用户控件、master page都是组件。你要像要把这个组件承包给别人一样把它独立、全面地进行设计,不要弄一个只有界面没有活动的空架子,要让它自身的代码就可以提供完整的服务。要分清哪些是这个组件应该提供的服务,那些是调用者的职责。很少开发正规asp.net软件的人,不太注重组件开发边界的划分(这个第一位的工作),结果是这个组件不能发挥最高的功效。
  • 打赏
  • 举报
回复
开发一个组件,要想得远一点,最好想到你可能“一辈子”都需要复用。如果你只有5个页面需要复用一个组件,最好想到未来还有50个页面都需要它。尽量在最初就把这个组件当做一个完整的外包程序系统去管理,对业务逻辑、设计规范、接口定义清晰。设计好了再动手(但是不要拖延)。
sxsluoyin 2007-05-29
  • 打赏
  • 举报
回复
masterpage是一个结构上的改良,并不是内容上的改良,所以当你执行不同的页面的时候,比如你ViewPageA.aspx,他响应的就是ViewPageA.cs,同理ViewPageB.aspx;你只要把数据源分开就行了,当然包括你的cs代码,这个你想放在masterpage里面?我想有些部分确实可以.对了,继承是干什么用的,好象在asp.net里面是用不到的技术,除了继承page.用户控件我不知道,可能是指custom contorls吧,暂时不用那么麻烦.
xiaocai0001 2007-05-29
  • 打赏
  • 举报
回复
谢谢楼上建议...

我去试一下 :)
  • 打赏
  • 举报
回复
一个用户控件可以小到一个TextBox的替代品,达到可以是一个整个ERP软件,组件的大小没有限制。组件就是工具。
xiaocai0001 2007-05-29
  • 打赏
  • 举报
回复
用户控件比master page简单直观
------------------------------
个人直觉, 用户控件用的规模比较小一点, 像我这种情况的, 那基本上整个页面就是一个用户控件. 未免觉得这个用户控件的规模太大了, 这样做合适么?

我没亲手做过.只是有这样的顾虑 :) 见笑了
  • 打赏
  • 举报
回复
你所反复描述的设计思路,没有任何问题,也看不出到底有什么难点。只是你没有动手而已。
xiaocai0001 2007-05-29
  • 打赏
  • 举报
回复
谢谢sxsluoyin的主意

楼上做法解决了我的第一个问题.. 所有的aspx文件可以直接从MasterPage继承来. 数据源单独绑定..

不过不知对我的第二问有什么见解...

如何实现各个页面的cs文件... 因为ViewPageA, ViewPageB的cs文件相同的部分很多, 函数结构完全一样, 只是处理逻辑不一样..

这儿我还有一个疑问: 如果控件都放在MasterPage里, 那么在ViewPageA/ViewPageB里如何响应这些控件消息? (我一直对这个MasterPage的概念很模糊, 很像模板, 又像继承, 感觉其实哪个都不是)

  • 打赏
  • 举报
回复
用户控件比master page简单直观。

如果你没有时间,那就算了。你把这个工作承包给懂得的人去做比较好。
sxsluoyin 2007-05-29
  • 打赏
  • 举报
回复
彻底晕了,不懂你们一大群在说什么.
DropDownList和一个GridView直接放在masterpage上面,然后在ViewPageA帮定ViewPageA的数据源,ViewPageB绑定ViewPageB的数据源,ViewPageB和ViewPageA不会干扰.为什么要用什么用户控件xxFindControl?
xiaocai0001 2007-05-29
  • 打赏
  • 举报
回复
或者这样说吧...

我现在页面上的所有制件布局都一样, 唯一有区别的是一个DropDownList绑定的数据源不同. GridView的数据源及显示的列内容不同.其它完全一样.

但在代码里ViewPageA以及ViewPageB对同一控件事件的处理逻辑是不一样的.

我现在就想知道怎么设计来实现这样的结构...

1. aspx页面可以像MasterPage一样可以直接继承过来, 又可以做细微处的定制.
2. cs文件对事件的响应一定要自己可定制.
xiaocai0001 2007-05-29
  • 打赏
  • 举报
回复
直觉上觉得用户控件可以解决问题, 但我现在没有太多时间去研究用户控件...

问题描述再直白一点吧.

ViewPageA, ViewPageB上都有一个DropDownList和一个GridView, 以及一个查询的Button
不同的是DropDownList和GridView的数据源不同. 我希望GridView的RowDataBind可以不同.
又希望两个页面的aspx布局保持一致. 点击Button时, 响应事件可以定制.
  • 打赏
  • 举报
回复
基本上,在你写程序之前,应该想好程序职责。如果是调用者的职责,就在调用者这边的代码中写;如果是提供服务的组件的职责,就应该在组件的代码中写。为了图省事而使用FindControl,是自寻烦恼的一种做法,做多了、深入了你就明白职责分配错误会带来多少开发和维护的垃圾、扯皮、无法扩展的麻烦。
  • 打赏
  • 举报
回复
对于你写的关于master page部分,我没有看懂你的意思。

采用两种想法——用户控件或者masterpage——都是可以的,原理基本相同。

当使用用户控件时,你要把控件的输入属性声明为public的,调用者给属性赋值,用户控件根据属性(改变之后重新)绑定数据。并且,对用户操作以事件方式通知调用者处理。

当使用masterpage时基本一样,所不同的此时是ContentPlaceHolder获取控制数据。
xiaocai0001 2007-05-29
  • 打赏
  • 举报
回复
谢谢楼上各位的解答...

现在我的困惑是:

1. 使用MasterPage + FindControl 可以搞定ViewPageA, ViewPageB的页面呈现部分. 但后台代码部分怎么办, 全部在ViewPageA, ViewPageB里用FindControl搞定?

2. 使用一楼所说的利用一个基类, 这个可以搞定后台的代码继承. 但aspx部分的页面呈现部分我又不知道如何下手了.
qwerttyy 2007-05-29
  • 打赏
  • 举报
回复
楼上正解。

你可以采用定义MasterPage,然后继承你自定义的模板类的方法来实现统一的页面行为。
加载更多回复(4)
Part1第一部分: 相信大家找得到该书的源代码部分 也就是这部分内容 因此我便无偿奉送 让大家下载试试。 若感觉可以方可继续下载电子书部分。 1.本书1~21章所附代码的运行环境 操作系统:Windows Server 2003或Windows XP Professional 开发环境:Microsoft Visual Studio 2005 数据库:SQL Server 2005 Web服务器:IIS 5.1及以上版本 2.本书所附光盘范例 第1章(\Chapter 01) 示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 form.html 表单范例。 css.html CSS范例。 第3章(\Chapter 03) 示例描述:本章介绍C# 2.0程序设计基础。 3-01.cs 第一个C#程序。 3-02.cs 不导入命名空间来改写程序3-01.cs。 3-03.cs ReadLine()方法读数据。 3-04.cs 常量的使用。 3-05.cs 整型类型的使用。 3-06.cs 结构类型的使用。 3-07.cs 枚举类型的使用。 3-08.cs 用一个输入参数通过值传递一个变量给一个方法。 3-09.cs 一维数组的使用。 3-10.cs 使用代理类型。 3-11.cs 使用接口。 3-12.cs 装箱操作。 3-13.cs 字符串操作。 3-14.cs if语句的使用。 3-15.cs switch语句的使用。 3-16.cs while语句的使用。 3-17.cs do-while语句的使用。 3-18.cs for语句的使用。 3-19.cs 异常捕获:try-catch语句的使用。 3-20.cs 异常捕获:try-finally语句的使用。 3-21.cs 异常捕获:try-catch-finally语句的使用。 3-22.cs get和set对属性的值进行读写操作。 3-23.cs 方法的使用。 3-24.cs 继承演示。 3-25.cs 多态性演示。 第4 章(\Chapter 04) 示例描述:本章学习ASP.NET 2.0页面基本对象。 4-01.aspx aspx页面添加一个Lable标签。 4-02.aspx 读出Application的属性值。 4-03.aspx 读出SessionID的值。 4-04.aspx 创建Session对象。 4-05.aspx 读取传递的Session值并显示。 4-06.aspx 使用Response对象的Write()方法。 4-07.aspx 使用Response对象的End()方法。 4-08.html 以post方式提交数据到4-08.aspx的表单。 4-08.aspx 接收表单数据并进行处理。 4
第1章(\C01)
示例描述:本章实现了用户登录功能
UserLogin 用于用户登录的验证程序

第2章(\C02)
示例描述:本章展现了ASP.NET 的缓存功能
CacheDependency \ ControlCache.aspx 表示控件级缓存
CacheDependency \ PageDependency.aspx 表示页面级缓存

第3章(\C03)
示例描述:本章从不同方面介绍ASP.NET 2.0新增的特性Profile。
ProfileWebSite\SimpleProfile.aspx 简单个性配置设置
ProfileWebSite\ComplexProfile.aspx 复杂个性配置设置
ProfileWebSite\ MigrateAnonymous.aspx 匿名用户的个性配置迁移

第4章(\C04)
示例描述:本章通过两个小系统演示了如何实现在线投票
SimpleVote 简单投票系统
FullVote 复杂投票系统

第5章(\C05)
示例描述:本章介绍了RSS的实现及应用。
RSS工具包 Microsoft提供的RSS工具组件
源代码\SimpleReader.aspx 简单RSS阅读器
源代码\ ComplexRSS.aspx 复杂RSS阅读器

第6章(\C06)
示例描述:本章介绍了在线编辑器的原理及实现。
FCKEditorSample FCK编辑器的使用示例
FreeTextBoxSample FreeText编辑器的使用示例
SimpleEditor 自定义的简单在线编辑器模块

第7章(\C07)
示例描述:本章示例展现了C#的字符串操作。
代码 实现在线支付的示例
第8章(\C08)
示例描述:本章演示了如何实现电子邮件的发送和接收
JMail接收 使用第三方组件实现邮件的发送和接收示例
SimpleMail 使用ASP.NET的Net类自定义邮件发送模块

第9章(\C09)
示例描述:本章示例展现了如何实现文件的上传和下载。
简单上传和下载 比较简单的上传下载模块
复杂上传和下载 复杂类型文件的上传和下载模块
第三方组件范例 使用第三方组件实现的上传和下载范例

第10章(\C10)
示例描述:本章示例展现了如何使用ASP.NET 2.0实现网络的图文验证功能
SimpleValidate 随机数字验证模块
ImageValidate 复杂图文验证模块

第11章(\C11)
示例描述:本章示例展现了ASP.NET 2.0对图片的处理方法
WatermarkedPhoto 使用ASP.NET 2.0实现图像水印
ThumbnailImage 使用ASP.NET 2.0实现缩略图模块
AspJpegSample 使用第三方组件在ASP.NET 2.0实现对图片的处理

第12章(\C12)
示例描述:本章示例展现了ASP.NET2.0的防盗链技术。
HandlerSample 图片的处理程序以及防止盗链的方法
FileHandlerSample 文件下载示例

第13章(\C13)
示例描述:本章示例展现了在ASP.NET2.0实现在线服务的功能
OnlineService 复杂的在线服务模块
QQSample 比较简单的QQ模式在线服务

第14章(\C14)
示例描述:本章示例演示了如何简单的实现站内和站外的搜索。
BaiduSample 使用百度完成的搜索范例
GoogleSample 使用Google完成的搜索范例

第15章(\C15)
示例描述:本章示例展现了如何使用ASP.NET 2.0统计网站的一些在线数据。
StatSample 网站统计模块的范例
createTable.sql 范例需要的数据库的脚本

第16章(\C16)
示例描述:本章示例展现了聊天室模块的实现。
SimpleChat 一个简单的双人聊天功能
ChatRoom 一个聊天室模块的范例

第17章(\C17)
示例描述:本章示例展现了如何在ASP.NET 2.0实现在线点播。
WebCast播放列表 提供播放需要的wmv文件列表
MovieSample 一个简单的在线点播范例

第18章(\C18)
示例描述:本章示例展现了在ASP.NET 2.0的报表应用。
SQL2000SampleDb.msi SQL Server2000的示例数据库
ReportSample 一个报表应用范例

第19章(\C19)
示例描述:本章示例展现PDF的应用以及在.NET 2.0的格式转换
PDFTool 创建PDF文档的范例
Table2PDF 将数据表转换为PDF文件的范例

第20章(\C20)
示例描述:本章用两种方式实现了留言板模块。
XMLMessage 使用XML技术打造的留言板范例:
DatabaseMessage 使用数据库打造的留言板范例

第21章(\C21)
示例描述:本章利用数据库访问助手SqlHelper.cs,演示了6种对数据库的不同操作。
ExcuteProc.aspx 执行存储过程的范例
ExcuteProcParm.aspx 执行带参数的存储过程的范例
ExcuteReader.aspx 执行返回DataReader类型的范例
ExcuteScalar.aspx 执行返回一个字段的范例
ExcuteSQL.aspx 执行普通SQL语句的范例
ExcuteSQLParm.aspx 执行带参数的SQL语句的范例

第22章(\C22)
示例描述:本章实现了新闻发布系统,通过新闻发布模板、类别等功能,从不同方面演示了新闻发布的功能
NewsSample 新闻发布范例
数据库 范例需要的数据库

第23章(\C23)
示例描述:本章实现了论坛模块系统,包括论坛类型和论坛帖子的各个操作功能
BBS 完整的论坛示例
数据库 论坛需要的数据库

第24章(\C24)
示例描述:本章通过两个简单的Web服务范例,讲解了如何在ASP.NET 2.0创建和使用服务。
WebServiceSample 一个简单的HelloWorld服务
WebServiceWeather 天气预报服务范例

第25章(\C25)
示例描述:本章实现了一个在线考试系统,可以随机抽取考题,并能在线阅卷。
Exam 在线考试模块
数据库 范例需要的数据库
第26章(\C26)
示例描述:本章通过Microsoft 提供的OWC组件实现了不同形状的图表,并提供了一个图像报表的示例。
OWCSample\ClusterChart.aspx 柱状图示例
OWCSample\PieChart.aspx 饼状图示例
OWCSample\ChartReport.aspx 图文报表示例
test.xls 范例生成的效果文件
第27章(\C27)
示例描述:本章通过讲述PetShop4的结构,详细分析了PetShop4各个模块功能
Microsoft .NET Pet Shop 4.0.msi PetShop4.0安装程序

第28章(\C28)
示例描述:本章通过一个简单的示例介绍了工厂模式的应用
TestFactory 工厂模式范例

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧