找回密码
 立即注册
搜索
查看: 838|回复: 14

ASP.NET中如何实现代码公用???

[复制链接]

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
发表于 2005-5-20 12:52:29 | 显示全部楼层 |阅读模式
我们知道,在ASP时代,我们可以搞个公用文件:比如:CONN.ASP

然后把数据库连接,登录验证什么的都放进去

然后在每一页前面都<!--#include file="CONN.ASP" -->

不过在ASP.NET该如何实现这样的效果呢?

ASP.NET是代码分离的,核心代码放在.VB里面

比如我想搞个登录验证

要在每一页都放验证代码,如果以后要修改,每页都要改,是很麻烦的事情

能不能定义一些公用代码,然后可以在每个.VB文件里面直接引用?

;13

8

主题

204

回帖

298

积分

海星

积分
298
发表于 2005-5-22 07:02:25 | 显示全部楼层
用web user control(用户控件)来实现,文件名是.ascx,也有code behind,做好之后直接可以在任何页面中使用。用户控件可以把公用的显示部分都变成控件,弄好了之后直接拖放到你要显示的位置就ok了,如果要动态显示话,先放个placeholder,然后动态加入就ok了
数据库连接我感觉从页面直接访问数据库不是很安全(并无理论依据),建议专门写一个包专门访问数据库,所有有关数据库访问的方法都在里面,然后在code behind的代码里面imports就ok了。
如果只是想定义个认证方法的话,直接写一个module,里面放上个global的对象,然后加个属性判断是否登录,否则redirect不就行了么?然后在那里不都可以调用了?看你用什么认证方法了。
我没接触过asp,只弄过jsp和asp.net,不过你说的这个功能如果我没理解错的话在asp.net里面应该是这么解决的
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-5-23 11:18:14 | 显示全部楼层
我试了一下使用用户控件
我建立了一个.ascx用来验证用户是否登录,YES的话-->显示A panel 的内容,NO的话-->显示B panel 的内容

当然,A panel 和B panel  是放在一个aspx网页里面的

运行的时候,提示"A panel 和B panel   没声明"

于是我在ascx声明了一下panel 控件

但是运行的时候又说"没应用到实例" ,昏~~~
回复

使用道具 举报

8

主题

204

回帖

298

积分

海星

积分
298
发表于 2005-5-23 21:51:58 | 显示全部楼层
不知道你代码怎么写的,有可能是你在ascx里面直接调用了aspx的code behind代码了,除了global的对象,ascx是不能直接对aspx中的对象或方法进行修改的,因为这两个文件互相不能直接访问的。
解决方法:
建立一个global的对象(用modules或者session),在里面放入登录属性,然后在aspx里面判断属性根据不同的属性显示不同的panel,ascx里面只是修改属性就ok了
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-5-24 16:15:59 | 显示全部楼层
我的确ascx里面直接调用了aspx的code behind代码

难怪会出错~~~

看来得想其他方法啊~~~

.NET就是麻烦啊

;13
回复

使用道具 举报

726

主题

7323

回帖

5966

积分

网站编辑

海盗船长

积分
5966
发表于 2005-5-24 17:18:37 | 显示全部楼层
写成一个函数,然后放在一个公用文件里,在使用的时候引用。并定义一个实例
回复

使用道具 举报

11

主题

414

回帖

573

积分

高级会员

积分
573
发表于 2005-5-24 20:30:42 | 显示全部楼层
使用类库
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-5-25 13:50:30 | 显示全部楼层
最初由 Error 发布
[B]写成一个函数,然后放在一个公用文件里,在使用的时候引用。并定义一个实例 [/B]


能不能举个例子?
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-5-25 19:19:54 | 显示全部楼层
说个简单的例子吧:
我定义了一个函数unhtml

Function unHtml(ByVal content)
        unHtml = content
        If content <> "" Then
            unHtml = Replace(unHtml, "<", "&lt;")
            unHtml = Replace(unHtml, ">", "&gt;")     
        End If
    End Function

作用是过滤用户输入的<>符号
每页都要用到

比如 msg=unhtml(Request("msg"))

这样的话,我需要在每个ASP.NET页都插入Function unHtml 这段代码
是比较麻烦的事情

我想,能不能把Function unHtml
独立出来
然后在每页引用呢?
回复

使用道具 举报

7

主题

150

回帖

219

积分

海星

积分
219
发表于 2005-5-25 23:39:33 | 显示全部楼层
写个class,里面的方法用static修饰,就能直接引用了,而不需再创建一个实例
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-17 04:45 , Processed in 0.084691 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表