mmkk's Weblog

dotnet and web skills
随笔 - 25, 评论 - 181, 引用 - 79

导航

工具

关于

标签

每月存档

广告



访客

Question:ViewState In VB.NET

ViewState在VB.NET中key区分大小写?可以观察下面的情况:
ViewState("Customer_id") = 1 ViewState("Customer_Id") = 2 Response.Write(ViewState("Customer_ID")) Response.Write(ViewState("Customer_id") <> ViewState("Customer_Id"))
Session("CustomerId") = 1 Session("customerid") = 2 Response.Write(Session("CustomeriD"))
结果很明显,ViewState那个比较输出true,而Session的输出值则是预期的2,cookie也是预期的覆盖.通过Reflector察看一下ViewState的set操作通过调用Add来执行悲伤的脸StateBag.Add)
Public Sub set_Item(ByVal key As String, ByVal value As Object) Me.Add(key, value) End Sub
不同的,Session或者Cookie的set操作都是通过类似dict(key) = value来实现set操作的,(HttpSessionState内部维护一个SessionDictionary,HttpCookie则是NameValueCollection).
通过Framework的文档可以看到IDictionary的Add方法,备注说明Add方法将不会修改现有元素,而StateBag内部正是维护一个IDictionary的bag字段,并且本身也实现了IDictionary,这样看来似乎都合乎情理了,但是继续察看StateBag.Add(String,Object)的实现,我却又模糊了,这是Reflector反编译出来的代码:
Public Function Add(ByVal key As String, ByVal value As Object) As StateItem If ((key Is Nothing) OrElse (key.Length Is 0)) Then Throw New ArgumentException(HttpRuntime.FormatResourceString("Key_Cannot_Be_Null")) End If Dim item1 As StateItem = TryCast(Me.bag(key),StateItem) If (item1 Is Nothing) Then If ((value Is Nothing) AndAlso Not Me.marked) Then Else item1 = New StateItem(value) Me.bag.Add(key, item1) End If Else If ((value Is Nothing) AndAlso Not Me.marked) Then Me.bag.Remove(key) Else item1.Value = value End If End If If ((item1 IsNot Nothing) AndAlso Me.marked) Then item1.IsDirty = True End If Return item1 End Function
从这段代码来看,难道是从IDictionary中通过key来读取value的操作区分大小写?不然item1不是Nothing就不可能调用bag.Add的方法,而是替换值,so,问题出在哪里呢?

posted on 2004-06-11 16:58:00 by mmkk  评论(15) 阅读(5118)

Asp.net Forum V2 RC2 and Rob Howard

Asp.net Forum V2 RC2版本已经release了,现在在http://forums.asp.net/forums可以看到整个UI有了很大的改变,至少看起来变漂亮许多了,原来Latest Source bug一堆,RC1版本也有很多问题,现在的这个版本已经有了比较大的改观了.
发现一个很大的变化就是顶头多了一个telligentsystems的logo,还有一些小字:


The ASP.NET Forums Toolkit is an Open Source discussion system
for Microsoft® .NET®, managed by »telligentsystems.


检索了一下才知道这是Rob Howard的新公司,这位Asp.net的Program Manager,Asp.net Forum v1的主要开发者之一已经离开了MS了,万分惊讶...
尽管这样看来Asp.net Forum仍然有Rob Howard参与,不过不知道他在MS的接任者是谁,能否同样出色,或者更加出色...

posted on 2004-06-08 11:26:00 by mmkk  评论(13) 阅读(5381)

Powered by: Joycode MVC Blogger System