简体   繁体   English

asp.net中的怪异数据集

[英]weird dataset in asp.net

I have built a dataset named Transaction_Time . 我建立了一个名为Transaction_Time的数据集。

I called it on Page_Load 我在Page_Load上称它为

Transaction_Time tranTme = new Transaction_Time();

put it in the session. 将其放在会话中。

Session["Transaction"] = tranTme;

Then I call that session and cast to dataset. 然后,我调用该会话并将其转换为数据集。

DataSet dstTranTime = (DataSet)Session["Transaction"];

I got the following error. 我收到以下错误。

Unable to cast object of type 'Transaction_Time' to type 'System.Data.DataSet'. 无法将类型为“ Transaction_Time”的对象转换为类型“ System.Data.DataSet”。

[InvalidCastException: Unable to cast object of type 'Transaction_Time' to type 'System.Data.DataSet'.]
   Transaction_Time.Page_Load(Object sender, EventArgs e) in c:\Inetpub\wwwroot\William29_11_2010\Transaction_Time.aspx.cs:47
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

It is OK for some other pages. 其他页面也可以。 But for some page, it doesn't. 但是对于某些页面却没有。

Is it something wrong that I do or.. ??? 我做错什么了吗?

You put in typeof(Transaction_Time) and try to get out typeof(DataSet). 您放入typeof(Transaction_Time)并尝试删除typeof(DataSet)。 this will fail until Transaction_Time is not derived from DataSet. 这将失败,直到没有从DataSet派生Transaction_Time。 Try to read Transaction_Time instead of DataSet. 尝试读取Transaction_Time而不是DataSet。

   Transaction_Time tranTme = new Transaction_Time(); 
   ....
   Session["Transaction"] = tranTme; 
   ....
   Transaction_Time dstTranTime = Session["Transaction"] as Transaction_Time; 

   if (dstTranTime == null)
       System.Dignostics.Trace.WriteLine("Ups! Expecting Transaction_Time, but got {0}", Session["Transaction"] );

It looks like you may have two classes called Transaction_Time. 看起来您可能有两个名为Transaction_Time的类。 If you have created a class called Transaction_Time and derived it from DataSet AND you have a class called Transaction_Time that is derived from, say, Page. 如果您创建了一个名为Transaction_Time的类并从DataSet派生,则您有一个名为Transaction_Time的类,该类派生自例如Page。 Then the compiler may be confused about which you mean and you may occasionally be storing the page Transaction_Time rather than the DataSet Transaction_Time. 然后,编译器可能会混淆您的意思,并且您有时可能会存储页面Transaction_Time而不是DataSet Transaction_Time。

Be explicit when creating the Transaction_Time class and use the fully qualified name OR rename one of your classes so that the name is not ambiguous. 在创建Transaction_Time类时使用显式名称,并使用完全限定名称或重命名您的一个类,以使名称不模糊。 That should solve your problem (assuming my assumptions are correct). 那应该可以解决您的问题(假设我的假设是正确的)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM