大厨师

在dotnetnuke中去掉显示姓名中的空格

学习dotnetnuke已经有一段时间了,但是从来也没有深入过,我的原则是能够使用就可以了,从来没有一天像今天一样把dnn的代码这样的翻来翻去,有一段时间没有看dnn的代码了,以前看过的都已经忘了,现在看了之后发现dnn的代码中还有一些不令人满意的地方,可读性差了一些,不是很好读(一般便秘的人,对厕所的要求都是比较高的)
以前看developer guide的时候,对dnn的结构稍了解一些,比如设计模式,但是没有深入,对设计模式不了解,可能正因为如此才走了弯路
说说我的问题
外国人的名字中间喜欢分开,他们字与字之间的分隔就使用空格,很多数据库方面的书也说要把姓和名分开作为两个字段,但是这种说法可能是外国人的话搬过来的,实际上姓名中间留空格并不符合我们的习惯,在网上论坛,社区等很多地方为了和国际接轨很多都是用姓和名分开。但是在一切情况下并不好,比如我最近作的一件事:建设一个dotnetnuke的网站作为网上办公用,但是网站并不针对个人,所以有了英文名的amend lee,也只好靠边站了,我们想使用的用户名是食品科学与工程系 可是如何作姓和名的拆分呢?姓食品科学与工程系吗 还是姓食品科学工程系?似乎都不合适。马上就要发布网站了,怎么解决这个问题呀,领导可不管你什么国外习惯,老人家了,说什么还要理由吗,不合适就使不合适,正式场合怎么可以把名字搞错了呢?曾经有过*/*/*/思/想/概/论/教研室的老师因为我在程序中将其写作*/*/*/思/想/教研室,和我纠缠不清了好些日子,可不要招惹那些学究。
可是怎么改呀??
打开数据库,看看关于users表,里面没有fullname字段,计算列,没错的,看看存储过程,GetUser,这个不错
ALTER  procedure dbo.GetUser

@PortalId int,
@UserId int

as

select U.UserId,
       UP.PortalId,
       U.Username,
       
'FullName' = U.FirstName + ' ' + U.LastName,
       U.FirstName,
       U.LastName,
       U.IsSuperUser
from Users U
left outer join UserPortals UP On U.UserId = UP.UserId
where  U.UserId = @UserId
and    (UP.PortalId = @PortalId or U.IsSuperUser = 1)

就是这里将+' ' 删除,编译,浏览,咦,还是不行,再看看GetUserByUsername
ALTER  procedure dbo.GetUserByUsername

@PortalId int,
@Username nvarchar(100)

as
 
select U.UserId,
       UP.PortalID,
       U.Username,
       
'FullName' = U.FirstName + ' ' + U.LastName,
       U.FirstName,
       U.LastName,
       U.IsSuperUser
from Users U
left outer join UserPortals UP On U.UserId = UP.UserId
where  Username = @Username
and    (UP.PortalId = @PortalId or U.IsSuperUser = 1 or @PortalId is null)


 糟糕,看来从sql中解决问题很难,要修改多少代码呀,想一想如果从这一端不行就到问题的另一端,等到显示的的时候把空格删掉!!我真佩服我自己,好聪明呀,可是修改什么地方呢?

info,userinfo,呵呵,找到了,修改userinfo.vb
        Public Property FullName() As String
            
Get
                
If _FullName = "" Then
                    
'Build from component names
                    '修改姓名中间的空格
                    _FullName = FirstName & " " & LastName
                    
'_FullName = FirstName & LastName
                End If
                
' _FullName.Replace(" ", "")
                Return _FullName
            
End Get
            
Set(ByVal Value As String)
                _FullName 
= Value '.Replace(" ", "")
            End Set
        
End Property

这不就是构造用户信息的地方吗,如果全名为空则姓+空格+名,把空格去掉直接把姓名连在一起,去除空格我还曾经想到AT,使用_FullName=Value.Remove(AT(_FullName," "),1) ,此路不通!
debug,在这里明明_FullName已经是“大厨师”,为什么网站上显示还是“大 厨师”,编译,缓存,不该想的我都想了,还是不行,只能跟踪一段看看。
一遍一遍的修改,调试让我这是麻烦的不行,这两天及其不听话,慢腾腾的,过两天割了你
As a Dummy the better way to be smart is asking others,问别人,省心又省事,
问师域,说可能要该数据库,太复杂,最好少改点,否则下次升级该怎么办
再想想看看,好像还不够靠前,继续往前,看看什么空间显示全名,Got it,Admin\users,看看Users.vb那么长,我可不看,本人没学过basic,随便看看还行,这么多可看不了
看看皮肤,看了看皮肤中定义的皮肤的定义,里面不涉及全名的问题,看看skins控件,
                        Dim objUserInfo As UserInfo = UserController.GetCurrentUserInfo

                        
If objUserInfo.UserID <> -1 Then
                            hypRegister.Text 
= objUserInfo.Profile.FullName
                            hypRegister.ToolTip 
= Services.Localization.Localization.GetString("ToolTip", Services.Localization.Localization.GetResourceFile(Me, MyFileName))

                            
If PortalSettings.UserTabId <> -1 Then
                                hypRegister.NavigateUrl 
= NavigateURL(PortalSettings.UserTabId)
                            
Else
                                hypRegister.NavigateUrl 
= NavigateURL("Register")
                            
End If
                        
End If
在这里,Orofile.FullName,右键看看定义,转到了userProfile.vb
去掉空格之后的代码
        Public ReadOnly Property FullName() As String
            
Get
                
Return _FirstName & _LastName 
                   'Return _FirstName & " " & _LaseName
            
End Get
        
End Property

搞定去睡觉了,本来想详细的说可是困得不行了,想多些点字可是自己写着都没意思
将原来设置的断点去掉,重新编译
机子真慢,有钱了买条512的内存,升了机子你也不知道,(忘了想要说什么了),真受不来他慢腾的,

为什么不能输 mozedong??为什么是...? 中国人都怎么了,顺便同情一下dudu

posted on 2005-05-11 02:43  大厨师  阅读(1626)  评论(4编辑  收藏  举报

导航