我已经构建了一个名为Transaction_Time
的数据集。
我在Page_Load
Transaction_Time tranTme = new Transaction_Time();
把它放在会话中。
Session["Transaction"] = tranTme;
然后我调用该会话并转换为数据集。
DataSet dstTranTime = (DataSet)Session["Transaction"];
我收到了以下错误。
无法将“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
其他一些页面也可以。但对于某些页面,它没有。
我做错了什么或者...... ???
答案 0 :(得分:3)
你输入typeof(Transaction_Time)并尝试输出typeof(DataSet)。这将失败,直到 Transaction_Time不是从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"] );
答案 1 :(得分:2)
看起来你可能有两个名为Transaction_Time的类。如果您创建了一个名为Transaction_Time的类并从DataSet中派生它,那么您就有一个名为Transaction_Time的类,该类派生自,例如,Page。然后编译器可能会混淆你的意思,你可能偶尔会存储页面Transaction_Time而不是DataSet Transaction_Time。
在创建Transaction_Time类并使用完全限定名称时要明确,或者重命名其中一个类,以使名称不含糊。这应该可以解决你的问题(假设我的假设是正确的)。