|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。web|页面 网上每天有人问怎样在webform页面之间传值,根基下去说,人人熟习的是
(1)url字符串传值
(2)session传值
(3)直接读取server.transfer过去的页面上的数据
后面2个就不说了,人人都晓得怎样用,前面一个能够用的人对照少,这里做一下引见。
Web 窗体页是使用法式中的类,因而可以向处置任何类一样为它们创立属性。然而,因为 Web 窗体页实践上仅在履行页的过程当中存在,它们的性命周期十分短。因而,Web 窗体页上属性的用处相当无限,由于它们仅在处置页的过程当中存在。然而,假如利用特定的手艺将控件从一页传递到另外一页,后一页仍可以会见前一页上的属性。
好比如今在一个webform页面上(page.aspx)放置了一个label,在
private void Page_Load(object sender, System.EventArgs e)
{
this.Label1.Text="test";
}
咱们设定了它的值,再为这个页面类设定一个公然的属性
public Label lab
{
get
{
return Label1;
}
}
前往的就是这个页面上的一个Label
然后在这个页面上放置一个按钮,按钮的click事务中添加以下代码
Server.Transfer("newpage.aspx");
在newpage.aspx中一样放置一个Label标签,用来显示前一个页面谁人Label的值,然后在Page_Load外面加上以下代码
if (!IsPostBack)
{
newpage p=(newpage)Context.Handler;
this.Label1.Text="传过去的值是:"+p.lab.Text;
}
咱们运转这个法式,点击按钮,发明呈现值传过去了,然而阅读器的url显示的仍是本来的page.aspx,申明server.transfer是不改动阅读器的url的,其实这申明此事务仅仅是在办事器端完成,并没有到客户端,这也就是为何能在无形态的http下失掉后面一个页面的数据的缘由,假如你换成response.redirect,你是不克不及失掉任何器材的。剖析一下下面的代码newpage p=(newpage)Context.Handler的意思就是创立源页类的实例变量,然后可以向其分派 HTTP 对象(IHttpHandler类的一个实例),即吸收初始恳求的对象。如许传值的优点在于不像session一样利用内存,出格合适大数据的情形(其实这不克不及称传值),害处只能是统一个办事器页面之间,并且url并没有改动,用户看了能够会懵懂。
对法式你可以进一步改善,咱们如今传的是一个Label的实例,你可以在页面间传递一切对象,乃至你可以直接利用后面一个页面的DataGrid!
</p> 由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|