asp.net 如何在类之间传递变量

k5ifujac  于 2023-06-25  发布在  .NET
关注(0)|答案(1)|浏览(131)

在DAL类中,执行ExecuteScalar后生成一个ID,我想通过一个变量从DAL类传递这个值到另一个类。它是用于使用C#的ASP.NET Web表单的
尝试通过使用Session和Application变量来实现它,但在这里不适用

yqyhoc1h

yqyhoc1h1#

哎呀,它是一个简单的“ID”,一个新的行PK ID作为一个插入的结果?
为什么一个类的事实会在这里成为任何问题?

Classs ProjectInfo
    int ProjectID
    datatable whateer

我做了一个数据库插入,得到一些PK ID

ProjectInfo.ProjectID = PKID

session["Project"] = ProjetInfo

稍后,在一些页面加载中,这样说:

ProjectInfo = (clsProjectInfo)session["Project"]

现在,可以使用任何和所有的“值”或“id”或任何东西。
所以,假设我们想把这个“ID”传递给另一个类,然后这样:

SomeOtherClass.ID = ProjectInfo.ID

那么,为什么在一个类中设置或传递某个值到另一个类时,将类放入session []中就不起作用了呢?
我在这里没有看到任何东西表明不能使用你总是编写的“简单”代码,以及不能使用session []来传递和持久化这样的值从一页到另一页或从一个代码到另一个代码。
Be是一个简单的“id”,你塞进session []中,还是塞进一个类到session中?我看不出这里有什么区别,你可以自由地将值或整个类插入会话中,在两个类之间传递和设置值是triavial的,支持的,这里没有我能想到的任何限制。
你必须解释为什么session []的用法在这里不起作用?
公平地说,在大多数情况下,当我通过会话将类传递到目标页面时?我在页面加载中做的第一件事是将session []转移到viewstate。假设这个类很小,原因是viewstate是针对每个页面的,而session []是针对每个用户的。
但是,如果用户打开同一个页面两次会发生什么?好了,现在基于会话的类将应用于两个页面,所以我遵循使用会话传递类的设计模式,但我随后将类持久化在该页面上的视图状态,因为视图状态是每个页面,因此代码可以继续基于视图状态中的持久化类正确操作,这是“每个页面”而不是“每个用户”。
如果你不遵循上面的设计模式,那么使用session []肯定会有一些陷阱,因为我们必须假设一个用户可以打开一个网页的多个副本,因此当一个网页可能被打开多次时,显然需要代码值的分离。
当然,如果这个类是一个“大”的数据对象,有很多行,那么我不建议你把这样的对象放在viewstate中,事实上,我甚至不建议你把这样的对象放在session []中。
然而,作为一般规则,我认为没有理由也没有限制通过session []传递值甚至类,您没有提供任何避免这种方法的好理由,或者事实上您声称不能使用session []。
在此之前,您提供了一个很好的可靠的叙述来避免和不使用会话,然后没有可靠的理由存在来避免使用会话。

相关问题