странный набор данных в asp.net - PullRequest
0 голосов
/ 17 декабря 2010

Я построил набор данных с именем 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

Это нормально для некоторых других страниц.Но для какой-то страницы это не так.

Что-то не так, что я делаю или .. ???

Ответы [ 2 ]

3 голосов
/ 17 декабря 2010

Вы вводите 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"] );
2 голосов
/ 17 декабря 2010

Похоже, у вас может быть два класса с именем Transaction_Time. Если вы создали класс с именем Transaction_Time и извлекли его из DataSet AND, у вас есть класс с именем Transaction_Time, который получен, скажем, из Page. Тогда компилятор может запутаться в том, что вы имеете в виду, и иногда вы можете хранить страницу Transaction_Time, а не DataSet Transaction_Time.

Будьте явными при создании класса Transaction_Time и используйте полное имя ИЛИ переименуйте один из ваших классов, чтобы имя не было неоднозначным. Это должно решить вашу проблему (при условии, что мои предположения верны).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...