在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
以前看developer guide的时候,对dnn的结构稍了解一些,比如设计模式,但是没有深入,对设计模式不了解,可能正因为如此才走了弯路
说说我的问题
外国人的名字中间喜欢分开,他们字与字之间的分隔就使用空格,很多数据库方面的书也说要把姓和名分开作为两个字段,但是这种说法可能是外国人的话搬过来的,实际上姓名中间留空格并不符合我们的习惯,在网上论坛,社区等很多地方为了和国际接轨很多都是用姓和名分开。但是在一切情况下并不好,比如我最近作的一件事:建设一个dotnetnuke的网站作为网上办公用,但是网站并不针对个人,所以有了英文名的amend lee,也只好靠边站了,我们想使用的用户名是食品科学与工程系 可是如何作姓和名的拆分呢?姓食品科学 名与工程系吗 还是姓食品科学名工程系?似乎都不合适。马上就要发布网站了,怎么解决这个问题呀,领导可不管你什么国外习惯,老人家了,说什么还要理由吗,不合适就使不合适,正式场合怎么可以把名字搞错了呢?曾经有过*/*/*/思/想/概/论/教研室的老师因为我在程序中将其写作*/*/*/思/想/教研室,和我纠缠不清了好些日子,可不要招惹那些学究。
可是怎么改呀??
打开数据库,看看关于users表,里面没有fullname字段,计算列,没错的,看看存储过程,GetUser,这个不错
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
就是这里将+' ' 删除,编译,浏览,咦,还是不行,再看看GetUserByUsername
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
糟糕,看来从sql中解决问题很难,要修改多少代码呀,想一想如果从这一端不行就到问题的另一端,等到显示的的时候把空格删掉!!我真佩服我自己,好聪明呀
![](/Emoticons/emembarrassed.gif)
info,userinfo,呵呵,找到了,修改userinfo.vb
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
debug,在这里明明_FullName已经是“大厨师”,为什么网站上显示还是“大 厨师”,编译,缓存,不该想的我都想了,还是不行,只能跟踪一段看看。
一遍一遍的修改,调试让我这是麻烦的不行,这两天及其不听话,慢腾腾的,过两天割了你
As a Dummy the better way to be smart is asking others,问别人,省心又省事,
问师域,说可能要该数据库,太复杂,最好少改点,否则下次升级该怎么办
再想想看看,好像还不够靠前,继续往前,看看什么空间显示全名,Got it,Admin\users,看看Users.vb那么长,我可不看,本人没学过basic,随便看看还行,这么多可看不了
看看皮肤,看了看皮肤中定义的皮肤的定义,里面不涉及全名的问题,看看skins控件,
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
去掉空格之后的代码
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
'Return _FirstName & " " & _LaseName
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
搞定去睡觉了,本来想详细的说可是困得不行了,想多些点字可是自己写着都没意思
将原来设置的断点去掉,重新编译
机子真慢,有钱了买条512的内存,
为什么不能输 mozedong??为什么是...? 中国人都怎么了,顺便同情一下dudu