学习dotnetnuke已经有一段时间了,但是从来也没有深入过,我的原则是能够使用就可以了,从来没有一天像今天一样把dnn的代码这样的翻来翻去,有一段时间没有看dnn的代码了,以前看过的都已经忘了,现在看了之后发现dnn的代码中还有一些不令人满意的地方,可读性差了一些,不是很好读(一般便秘的人,对厕所的要求都是比较高的)
以前看developer guide的时候,对dnn的结构稍了解一些,比如设计模式,但是没有深入,对设计模式不了解,可能正因为如此才走了弯路
说说我的问题
外国人的名字中间喜欢分开,他们字与字之间的分隔就使用空格,很多数据库方面的书也说要把姓和名分开作为两个字段,但是这种说法可能是外国人的话搬过来的,实际上姓名中间留空格并不符合我们的习惯,在网上论坛,社区等很多地方为了和国际接轨很多都是用姓和名分开。但是在一切情况下并不好,比如我最近作的一件事:建设一个dotnetnuke的网站作为网上办公用,但是网站并不针对个人,所以有了英文名的amend lee,也只好靠边站了,我们想使用的用户名是*/*/*/思/想/教研室,和我纠缠不清了好些日子,可不要招惹那些学究。
可是怎么改呀??
打开数据库,看看关于users表,里面没有fullname字段,计算列,没错的,看看存储过程,GetUser,这个不错
在dotnetnuke中去掉显示姓名中的空格ALTER  procedure dbo.GetUser
在dotnetnuke中去掉显示姓名中的空格
在dotnetnuke中去掉显示姓名中的空格
@PortalId int,
在dotnetnuke中去掉显示姓名中的空格
@UserId int
在dotnetnuke中去掉显示姓名中的空格
在dotnetnuke中去掉显示姓名中的空格
as
在dotnetnuke中去掉显示姓名中的空格
在dotnetnuke中去掉显示姓名中的空格
select U.UserId,
在dotnetnuke中去掉显示姓名中的空格       UP.PortalId,
在dotnetnuke中去掉显示姓名中的空格       U.Username,
在dotnetnuke中去掉显示姓名中的空格       
'FullName' = U.FirstName + ' ' + U.LastName,
在dotnetnuke中去掉显示姓名中的空格       U.FirstName,
在dotnetnuke中去掉显示姓名中的空格       U.LastName,
在dotnetnuke中去掉显示姓名中的空格       U.IsSuperUser
在dotnetnuke中去掉显示姓名中的空格
from Users U
在dotnetnuke中去掉显示姓名中的空格
left outer join UserPortals UP On U.UserId = UP.UserId
在dotnetnuke中去掉显示姓名中的空格
where  U.UserId = @UserId
在dotnetnuke中去掉显示姓名中的空格
and    (UP.PortalId = @PortalId or U.IsSuperUser = 1)
在dotnetnuke中去掉显示姓名中的空格

就是这里将+' ' 删除,编译,浏览,咦,还是不行,再看看GetUserByUsername
在dotnetnuke中去掉显示姓名中的空格ALTER  procedure dbo.GetUserByUsername
在dotnetnuke中去掉显示姓名中的空格
在dotnetnuke中去掉显示姓名中的空格
@PortalId int,
在dotnetnuke中去掉显示姓名中的空格
@Username nvarchar(100)
在dotnetnuke中去掉显示姓名中的空格
在dotnetnuke中去掉显示姓名中的空格
as
在dotnetnuke中去掉显示姓名中的空格 
在dotnetnuke中去掉显示姓名中的空格
select U.UserId,
在dotnetnuke中去掉显示姓名中的空格       UP.PortalID,
在dotnetnuke中去掉显示姓名中的空格       U.Username,
在dotnetnuke中去掉显示姓名中的空格       
'FullName' = U.FirstName + ' ' + U.LastName,
在dotnetnuke中去掉显示姓名中的空格       U.FirstName,
在dotnetnuke中去掉显示姓名中的空格       U.LastName,
在dotnetnuke中去掉显示姓名中的空格       U.IsSuperUser
在dotnetnuke中去掉显示姓名中的空格
from Users U
在dotnetnuke中去掉显示姓名中的空格
left outer join UserPortals UP On U.UserId = UP.UserId
在dotnetnuke中去掉显示姓名中的空格
where  Username = @Username
在dotnetnuke中去掉显示姓名中的空格
and    (UP.PortalId = @PortalId or U.IsSuperUser = 1 or @PortalId is null)
在dotnetnuke中去掉显示姓名中的空格
在dotnetnuke中去掉显示姓名中的空格

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

info,userinfo,呵呵,找到了,修改userinfo.vb

在dotnetnuke中去掉显示姓名中的空格            Get
在dotnetnuke中去掉显示姓名中的空格                
If _FullName = "" Then
在dotnetnuke中去掉显示姓名中的空格                    
'Build from component names
在dotnetnuke中去掉显示姓名中的空格
                    '修改姓名中间的空格
在dotnetnuke中去掉显示姓名中的空格
                    _FullName = FirstName & " " & LastName
在dotnetnuke中去掉显示姓名中的空格                    
'_FullName = FirstName & LastName
在dotnetnuke中去掉显示姓名中的空格
                End If
在dotnetnuke中去掉显示姓名中的空格                
' _FullName.Replace(" ", "")
在dotnetnuke中去掉显示姓名中的空格
                Return _FullName
在dotnetnuke中去掉显示姓名中的空格            
End Get
在dotnetnuke中去掉显示姓名中的空格            
Set(ByVal Value As String)
在dotnetnuke中去掉显示姓名中的空格                _FullName 
= Value '.Replace(" ", "")
在dotnetnuke中去掉显示姓名中的空格
            End Set
在dotnetnuke中去掉显示姓名中的空格        
End Property
在dotnetnuke中去掉显示姓名中的空格
这不就是构造用户信息的地方吗,如果全名为空则姓+空格+名,把空格去掉直接把姓名连在一起,去除空格我还曾经想到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控件,
在dotnetnuke中去掉显示姓名中的空格                        Dim objUserInfo As UserInfo = UserController.GetCurrentUserInfo
在dotnetnuke中去掉显示姓名中的空格
在dotnetnuke中去掉显示姓名中的空格                        
If objUserInfo.UserID <> -1 Then
在dotnetnuke中去掉显示姓名中的空格                            hypRegister.Text 
= objUserInfo.Profile.FullName
在dotnetnuke中去掉显示姓名中的空格                            hypRegister.ToolTip 
= Services.Localization.Localization.GetString("ToolTip", Services.Localization.Localization.GetResourceFile(Me, MyFileName))
在dotnetnuke中去掉显示姓名中的空格
在dotnetnuke中去掉显示姓名中的空格                            
If PortalSettings.UserTabId <> -1 Then
在dotnetnuke中去掉显示姓名中的空格                                hypRegister.NavigateUrl 
= NavigateURL(PortalSettings.UserTabId)
在dotnetnuke中去掉显示姓名中的空格                            
Else
在dotnetnuke中去掉显示姓名中的空格                                hypRegister.NavigateUrl 
= NavigateURL("Register")
在dotnetnuke中去掉显示姓名中的空格                            
End If
在dotnetnuke中去掉显示姓名中的空格                        
End If
在这里,Orofile.FullName,右键看看定义,转到了userProfile.vb
去掉空格之后的代码

在dotnetnuke中去掉显示姓名中的空格            Get
在dotnetnuke中去掉显示姓名中的空格                
Return _FirstName & _LastName 
                   'Return _FirstName & " " & _LaseName
在dotnetnuke中去掉显示姓名中的空格            
End Get
在dotnetnuke中去掉显示姓名中的空格        
End Property

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

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-31
  • 2022-12-23
  • 2021-06-29
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-10
  • 2021-12-31
  • 2022-12-23
  • 2022-02-09
相关资源
相似解决方案